Java学习day080 Swing用户界面组件(五:菜单二)(工具栏、工具提示)

使用的教材是java核心技术卷1,我将跟着这本书的章节同时配合视频资源来进行学习基础java知识。

day080   Swing用户界面组件(五:菜单二)(工具栏、工具提示)


1.工具栏

工具栏是在程序中提供的快速访问常用命令的按钮栏,如图1所示。工具栏的特殊之处在于可以将它随处移动。可以将它拖拽到框架的四个边框上,如图2所示。

释放鼠标按钮后,工具栏将会停靠在新的位置上,如图1所示。工具栏可以完全脱离框架。这样的工具栏将包含在自己的框架中,如图2所示。当关闭包含工具栏的框架时,它会冋到原始的框架中。

编写创建工具栏的代码非常容易,并且可以将组件添加到工具栏中:

JToolBar bar=new JToolBar();
bar.add(blueButton);

JToolBar类还有一个用来添加Action对象的方法,可以用Action对象填充工具栏:

bar.add(blueAction);

这个动作的小图标将会出现在工具栏中。可以用分隔符将按钮分组:

bar.addSeparator();

例如,图中的工具栏有一个分隔符,它位于第三个按钮和第四个按钮之间。然后,将工具栏添加到框架中:

add(bar,BorderLayout.NORTH):

当工具栏没有停靠时,可以指定工具栏的标题:

bar=new JToolBar(titleString);

在默认情况下,工具栏最初为水平的。如果想要将工具栏垂直放置,可以使用下列代码:

bar=new JToolBar(SwingConstants.VERTICAL)

或者

bar=new JToolBar(titleString,SwingConstants.VERTICAL)

按钮是工具栏中最常见的组件类型。然而工具栏中的组件并不仅限如此。例如,可以往工具栏中加人组合框。


2.工具提示

工具栏有一个缺点,这就是用户常常需要猜测按钮上小图标按钮的含义。为了解决这个问题,用户界面设计者发明了工具提示(tooltips)。当光标停留在某个按钮上片刻时,工具提示就会被激活。工具提示文本显示在一个有颜色的矩形里。当用户移开鼠标时,工具提示就会自动地消失。如图所示。

在Swing中,可以调用setToolText方法将工具提不添加到JComponent上:exitButton.setToolTipText("Exit");

还有一种方法是,如果使用Action对象,就可以用SHORT_DESCRIPTION关联工具提示:

exitAction.putValue(Action.SHORTJESCRIPnON, "Exit");

下面的程序说明了如何将一个Action对象添加到菜单和工具栏中。

注意,动作名在菜单中就是菜单项名,而在工具栏中就是简短的说明。

/**
 *@author  zzehao
 */
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
 
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.JToolBar;
 
public class ToolBarFrame extends JFrame
{
	private static final int DEFAULT_WIDTH = 300;
	private static final int DEFAULT_HEIGHT =200;
	private JPanel panel;
	
	public ToolBarFrame()
	{
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
		panel = new JPanel();
		add( panel, BorderLayout.CENTER );
		Action blueAction = new ColorAction( "Blue", new ImageIcon("blue-ball.gif"), Color.BLUE );
		Action yellowAction = new ColorAction( "Yellow", new ImageIcon("yellow-ball.gif"), Color.YELLOW );
		Action redAction = new ColorAction( "Red", new ImageIcon("yed-ball.gif"), Color.RED );
		Action exitAction = new AbstractAction( "Exit", new ImageIcon("exit.gif") ) {
			@Override
			public void actionPerformed(ActionEvent e) 
			{
				System.exit(0);
			}
		};
		exitAction.putValue(Action.SHORT_DESCRIPTION, "Exit");
		
		JToolBar bar = new JToolBar();
		bar.add(blueAction);//返回的是一个按钮,即相当于在工具栏中增加一个按钮
		bar.add(yellowAction);
		bar.add(redAction);
		bar.addSeparator();
		bar.add(exitAction);
		add(bar,BorderLayout.NORTH);
		
		//将Action对象添加到菜单栏中
		JMenu menu = new JMenu("Color");
		menu.add(yellowAction);
		menu.add(blueAction); 
		menu.add(redAction);
		menu.add(exitAction);
		JMenuBar menuBar = new JMenuBar();
		menuBar.add(menu);
		setJMenuBar(menuBar);
		
	}
	
	//动作
	class ColorAction extends AbstractAction
	{
		public ColorAction( String name, Icon icon, Color c ) 
		{
			putValue(Action.NAME, name);
			putValue(Action.SMALL_ICON, icon);
			putValue(Action.SHORT_DESCRIPTION, name+" background");
			putValue("Color", c);
		}
		
		@Override
		public void actionPerformed(ActionEvent e) 
		{
			Color c = (Color) getValue("Color");
			panel.setBackground(c);
		}
	}
	
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable() 
		{
			@Override
			public void run() 
			{
				JFrame frame = new ToolBarFrame();//初始化窗口
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置:关闭窗口,则程序退出
				frame.setVisible(true);//显示窗口
			}
		});
	}	
}

运行的结果是:


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值