how2j.cn

下载区
文件名 文件大小
images.rar 42k

工具版本兼容问题
工具栏用于存放常用的按钮


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



4分25秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : 工具栏   
步骤 2 : 给按钮设置提示信息   
步骤 3 : 禁止工具栏拖动   

工具栏
package gui; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JToolBar; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); // 菜单 addMenu(f); // 工具栏 JToolBar tb = new JToolBar(); // 为工具栏增加按钮 JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg")); JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg")); JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg")); JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg")); JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg")); JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg")); tb.add(b1); tb.add(b2); tb.add(b3); tb.add(b4); tb.add(b5); tb.add(b6); // 把工具栏放在north的位置 f.setLayout(new BorderLayout()); f.add(tb, BorderLayout.NORTH); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static void addMenu(JFrame f) { JMenuBar mb = new JMenuBar(); JMenu mHero = new JMenu("英雄"); JMenu mItem = new JMenu("道具"); JMenu mWord = new JMenu("符文"); JMenu mSummon = new JMenu("召唤师"); JMenu mTalent = new JMenu("天赋树"); // 菜单项 mHero.add(new JMenuItem("近战-Warriar")); mHero.add(new JMenuItem("远程-Range")); mHero.add(new JMenuItem("物理-physical")); mHero.add(new JMenuItem("坦克-Tank")); mHero.add(new JMenuItem("法系-Mage")); mHero.add(new JMenuItem("辅助-Support")); mHero.add(new JMenuItem("打野-Jungle")); mHero.add(new JMenuItem("突进-Charge")); mHero.add(new JMenuItem("男性-Boy")); mHero.add(new JMenuItem("女性-Girl")); mb.add(mHero); mb.add(mItem); mb.add(mWord); mb.add(mSummon); mb.add(mTalent); f.setJMenuBar(mb); } }
步骤 2 :

给按钮设置提示信息

edit
当鼠标放在按钮上的时候会出现提示
给按钮设置提示信息
package gui; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JToolBar; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); addMenu(f); JToolBar tb = new JToolBar(); JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg")); JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg")); JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg")); JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg")); JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg")); JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg")); tb.add(b1); tb.add(b2); tb.add(b3); tb.add(b4); tb.add(b5); tb.add(b6); // 给按钮设置提示信息 b1.setToolTipText("坑爹英雄"); // 把工具栏放在north的位置 f.setLayout(new BorderLayout()); f.add(tb, BorderLayout.NORTH); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static void addMenu(JFrame f) { JMenuBar mb = new JMenuBar(); JMenu mHero = new JMenu("英雄"); JMenu mItem = new JMenu("道具"); JMenu mWord = new JMenu("符文"); JMenu mSummon = new JMenu("召唤师"); JMenu mTalent = new JMenu("天赋树"); // 菜单项 mHero.add(new JMenuItem("近战-Warriar")); mHero.add(new JMenuItem("远程-Range")); mHero.add(new JMenuItem("物理-physical")); mHero.add(new JMenuItem("坦克-Tank")); mHero.add(new JMenuItem("法系-Mage")); mHero.add(new JMenuItem("辅助-Support")); mHero.add(new JMenuItem("打野-Jungle")); mHero.add(new JMenuItem("突进-Charge")); mHero.add(new JMenuItem("男性-Boy")); mHero.add(new JMenuItem("女性-Girl")); mb.add(mHero); mb.add(mItem); mb.add(mWord); mb.add(mSummon); mb.add(mTalent); f.setJMenuBar(mb); } }
步骤 3 :

禁止工具栏拖动

edit
默认情况下 工具栏可以通过鼠标拖动

setFloatable(false);

可以禁止鼠标拖动功能
禁止工具栏拖动
package gui; import java.awt.BorderLayout; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JToolBar; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); addMenu(f); JToolBar tb = new JToolBar(); JButton b1 = new JButton(new ImageIcon("e:/project/j2se/1.jpg")); JButton b2 = new JButton(new ImageIcon("e:/project/j2se/2.jpg")); JButton b3 = new JButton(new ImageIcon("e:/project/j2se/3.jpg")); JButton b4 = new JButton(new ImageIcon("e:/project/j2se/4.jpg")); JButton b5 = new JButton(new ImageIcon("e:/project/j2se/5.jpg")); JButton b6 = new JButton(new ImageIcon("e:/project/j2se/6.jpg")); tb.add(b1); tb.add(b2); tb.add(b3); tb.add(b4); tb.add(b5); tb.add(b6); b1.setToolTipText("坑爹英雄"); // 禁止工具栏拖动 tb.setFloatable(false); // 把工具栏放在north的位置 f.setLayout(new BorderLayout()); f.add(tb, BorderLayout.NORTH); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static void addMenu(JFrame f) { JMenuBar mb = new JMenuBar(); JMenu mHero = new JMenu("英雄"); JMenu mItem = new JMenu("道具"); JMenu mWord = new JMenu("符文"); JMenu mSummon = new JMenu("召唤师"); JMenu mTalent = new JMenu("天赋树"); // 菜单项 mHero.add(new JMenuItem("近战-Warriar")); mHero.add(new JMenuItem("远程-Range")); mHero.add(new JMenuItem("物理-physical")); mHero.add(new JMenuItem("坦克-Tank")); mHero.add(new JMenuItem("法系-Mage")); mHero.add(new JMenuItem("辅助-Support")); mHero.add(new JMenuItem("打野-Jungle")); mHero.add(new JMenuItem("突进-Charge")); mHero.add(new JMenuItem("男性-Boy")); mHero.add(new JMenuItem("女性-Girl")); mb.add(mHero); mb.add(mItem); mb.add(mWord); mb.add(mSummon); mb.add(mTalent); f.setJMenuBar(mb); } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2020-03-23 使用循环来添加组件
苏稳




类名使用的中文。
package 菜单;
/**
 * 工具栏的和菜单的使用
 */
import java.awt.BorderLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;

public class Jtoolbar_gjl {

	public static void main(String[] args) {//工具栏
		JFrame j=new JFrame("工具栏");
		j.setSize(500, 400);
		j.setLocation(100, 100);
		//菜单栏
		caidan(j);
		
		JToolBar g=new JToolBar();//工具栏
		JButton[] jj=new JButton[3];
		
		ImageIcon[] ii=new ImageIcon[3];//创建一个图片数组
		String[] uu= {"C:\\Users\\Administrator\\Desktop\\3.png",
		"C:\\Users\\Administrator\\Desktop\\4.png","C:\\Users\\Administrator\\Desktop\\5.png"};
		for (int i = 0; i < ii.length; i++) {//将图片传入imageicon
			ii[i]=new ImageIcon(uu[i]);
			
		}
		for (int j1 = 0; j1 <3; j1++) {//将imageicon传入按钮
			jj[j1]=new  JButton(ii[j1]);
			g.add(jj[j1]);
		}
		
		String[] stri= {"360浏览器","QQ音乐","360安全卫士"};//实例化一个字符串数组
		for (int i = 0; i <3; i++) {
			jj[i].setToolTipText(stri[i]);//给按钮加提示
		}
		g.setFloatable(false);//禁止工具栏拖动。

		
		j.setLayout(new BorderLayout());
		j.add(g,BorderLayout.NORTH);
		j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		j.setVisible(true);
		
	}
	
	public static void caidan(JFrame f) {//菜单栏
		JMenuBar mb=new JMenuBar();
		
		JMenu[] x=new JMenu[4];
		String[] o= {"英雄","符文","点券","地图"};
		for (int i = 0; i < x.length; i++) {
			x[i]=new JMenu(o[i]);
			mb.add(x[i]);
		}
		
		JMenuItem[] h=new JMenuItem[5];
		String[] g= {"亚瑟","猴子","妲己","刘备","孙尚香"};
		for (int i = 0; i < h.length; i++) {
			h[i]=new JMenuItem(g[i]);
			x[0].add(h[i]);
			for (int j = 0; j <1; j++) {
				x[0].addSeparator();
			}
		}
		
		f.setJMenuBar(mb);
	}
}

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-11-08 提示信息不显示,还有我的本来就没办法拖动
尹文




粘贴站长的代码,那个提示信息不显示,还有我的本来就没办法拖动
package test13;

import java.awt.BorderLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JToolBar;

public class MainTest {
	public static void main(String[] args) {
		 
        JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        addMenu(f);
 
        JToolBar tb = new JToolBar();
        JButton b1 = new JButton(new ImageIcon("src/test13/images/1.jpg"));
        JButton b2 = new JButton(new ImageIcon("src/test13/images/2.jpg"));
        JButton b3 = new JButton(new ImageIcon("src/test13/images/3.jpg"));
        JButton b4 = new JButton(new ImageIcon("src/test13/images/4.jpg"));
        JButton b5 = new JButton(new ImageIcon("src/test13/images/5.jpg"));
        JButton b6 = new JButton(new ImageIcon("src/test13/images/6.jpg"));
        tb.add(b1);
        tb.add(b2);
        tb.add(b3);
        tb.add(b4);
        tb.add(b5);
        tb.add(b6);
 
        // 给按钮设置提示信息
        b1.setToolTipText("坑爹英雄");
//        b2.setToolTipText("啊手动阀");
 
//        tb.setFloatable(false);
        
        // 把工具栏放在north的位置
        f.setLayout(new BorderLayout());
        f.add(tb, BorderLayout.NORTH);
 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        f.setVisible(true);
    }
 
    private static void addMenu(JFrame f) {
        JMenuBar mb = new JMenuBar();
 
        JMenu mHero = new JMenu("英雄");
        JMenu mItem = new JMenu("道具");
        JMenu mWord = new JMenu("符文");
        JMenu mSummon = new JMenu("召唤师");
        JMenu mTalent = new JMenu("天赋树");
 
        // 菜单项
        mHero.add(new JMenuItem("近战-Warriar"));
        mHero.add(new JMenuItem("远程-Range"));
        mHero.add(new JMenuItem("物理-physical"));
        mHero.add(new JMenuItem("坦克-Tank"));
        mHero.add(new JMenuItem("法系-Mage"));
        mHero.add(new JMenuItem("辅助-Support"));
        mHero.add(new JMenuItem("打野-Jungle"));
        mHero.add(new JMenuItem("突进-Charge"));
        mHero.add(new JMenuItem("男性-Boy"));
        mHero.add(new JMenuItem("女性-Girl"));
 
        mb.add(mHero);
        mb.add(mItem);
        mb.add(mWord);
        mb.add(mSummon);
        mb.add(mTalent);
 
        f.setJMenuBar(mb);
    }
}

							


2 个答案

小机double
答案时间:2020-01-18
要等一会才会显示的

ddddq
答案时间:2020-01-13
提示信息好像是延迟的问题,你鼠标放上去不动等一会就会弹出了,我也遇到这个问题了,我刚放上去发现没有提示消息就把鼠标移开,,,然后就以为不显示



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2017-06-19 步骤一中工具栏的图标没有显示出来图片
2017-04-05 按钮没有提示信息




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-图形界面-工具栏 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 745032160
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图