目录
一、JToolBar介绍
Swing提供了JToolBar类来创建工具类,并且可以往JToolBar中添加多个工具按钮。
方法:
JToolBar(String name,int orientation) 创建一个名字为name,方向是orientation的,可以是 SwingConstants.HORIZONTAL或SwingConstants.VERTICAL JButton add(Action a) 通过Action对象为JToolBar工具条添加对应的工具按钮 addSeparator(Dinmension size) 向工具条中添加指定大小的分隔符 setFloatable(boolean b) 设定工具条是否可以被拖动 setMargin() 设置工具条与工具按钮的边距 setOrientation(int o) 设置工具条的方向
上述API add(Action a)这个方法中的Action接口是ActionListener的一个子接口,那么它就代表一个事件监听器,而这里add()方法是在给工具条添加一个按钮,为什么传递的是一个事件监听器呢?
首先要明确的是不管是菜单条中的菜单项还是工具条中的工具按钮,最终肯定是需要点击来完成一些操作,所以JToolBar以及JMenu都提供了更加便捷的添加子组件的方法add(Action a),在这个方法的内部会做如下几件事:
1:创建一个适用于该容器的组件(例如在工具栏中创建一个工具按钮)
2:从Action对象中获得对应的属性来设置该组件(通过Icon来设置按钮图标)
3:把Action监听器注册到刚才创建的组件上。
二、实例
案列:制作如图所示的界面
public class exer1 { JFrame s=new JFrame("练习"); JTextArea text=new JTextArea(10,40); JToolBar jToolBar=new JToolBar("播放工具条",SwingConstants.HORIZONTAL); //创建三个Action对象 //传递参数:name和icon,对重在添加工具条中时会被拿出来作为按钮的名称和图标 Action pre=new AbstractAction("上一曲",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\pre.png")) { @Override public void actionPerformed(ActionEvent e) { text.append("上一曲\n"); } }; Action pause=new AbstractAction("暂停",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\pause.png")) { @Override public void actionPerformed(ActionEvent e) { text.append("暂停\n"); } }; Action next=new AbstractAction("下一曲",new ImageIcon("D:\\idea\\project\\pro1\\exercise1\\image\\next.png")) { @Override public void actionPerformed(ActionEvent e) { text.append("下一曲\n"); } }; public void init(){ JButton b1=new JButton(pre); JButton b2=new JButton(pause); JButton b3=new JButton(next); jToolBar.add(b1); //加分隔符 jToolBar.addSeparator(); jToolBar.add(b2); jToolBar.addSeparator(); jToolBar.add(b3); s.add(jToolBar,BorderLayout.NORTH); s.add(text); s.setDefaultCloseOperation(3); s.pack(); s.setVisible(true); } }