swing的JTooBar组件
使用JToolBar创建工具条 Swing提供了JToolBar类来创建工具条,并且可以往JToolBar中添加多个工具按钮。
如下,其中orientation的是取值可以是SwingConstants.HORIZONTAL(即水平)或SwingConstants.VERTICAL(即垂直)
| 方法 | 作用 |
|---|---|
| JToolBar(String name ,int orientation) | 创建一个名字为name,方向为orientation的工具条对象 |
| JButton add(Action a) | 通过Action对象为JToolBar工具条添加对应的工具按钮 |
| addSeparator(Dimension size) | 向工具条中添加指定大小的分隔线 |
| setFloatable(boolean b) | 设定工具条是否可以被拖动 |
| setMargin(Insets m) | 设置工具条与工具按钮的边距 |
| setOrientation(int o) | 设置工具条的方向 |
| setRollover(boolean rollover) | 设置此工具条的rollover状态 |
add(Action a)方法:
上述API中add(Action a)这个方法比较难理解,为什么呢,之前说过,Action接口是ActionListener的一个子接口,那么它就代表一个事件监听器,而这里add方法是在给工具条添加一个工具按钮,为什么传递的是一个事件监听器呢?
首先要明确的是不管是菜单条中的菜单项还是工具条中的工具按钮,最终肯定是需要点击来完成一些操作,所以JToolBar以及JMenu都提供了更加便捷的添加子组件的方法add(Action a),在这个方法的内部会做如下几件事:
1、创建一个适用于该容器的组件(例如,在工具栏中创建一个工具按钮) 2、从Action对象中获得对应的属性来设置该组件(例如,通过 name 来设置文本,通过 lcon 来设置图标) 3、把Action监听器注册到刚才创建的组件上
swing的JTooBar组件_练习
xxxxxxxxxxpackage ch30;
import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;
public class a_7_0swing_基本组件_JTooBar {
//当前窗口 JFrame jf = new JFrame("测试工具条"); //文本域,6行,35列 JTextArea jta = new JTextArea(6, 35);
//创建工具条 //JToolBar jToolBar = new JToolBar();//无参 JToolBar jToolBar = new JToolBar("播放工具条",SwingConstants.HORIZONTAL);//带参
//用最上面提供的Action方法来创建"上一曲"按钮 //注意:由于Action是ActionListener的一个子接口,ActionListene里面有好几个实现类,我们只需要new其中的AbstractAction这个实现类即可 Action pre = new AbstractAction("上一曲", new ImageIcon("src\\img\\pre.png")) { //下面那个是当用户点击了按钮之后会发生哪些行为,例如在文本域里面输出"上一曲"字符串,并换行 public void actionPerformed(ActionEvent e) { jta.append("上一曲.\n"); } };
//用最上面提供的Action方法来创建"暂停"按钮 Action pause = new AbstractAction("暂停", new ImageIcon("src\\img\\pause.png")) { //下面那个是当用户点击了按钮之后会发生哪些行为,例如在文本域里面输出"暂停播放"字符串,并换行 public void actionPerformed(ActionEvent e) { jta.append("暂停播放.\n"); } };
//用最上面提供的Action方法来创建"下一曲"按钮 Action next = new AbstractAction("下一曲", new ImageIcon("src\\img\\next.png")) { //下面那个是当用户点击了按钮之后会发生哪些行为,例如在文本域里面输出"下一曲"字符串,并换行 public void actionPerformed(ActionEvent e) { jta.append("下一曲.\n"); } };
public void init() {
//让上面的三个按钮有相应文字。原理:把我们上面Action出来的三个按钮的文字拿过来,放到对应的这三个按钮里面 //注意此时事件也注册到按钮里了 JButton preBtn = new JButton(pre); JButton pauseBtn = new JButton(pause); JButton nextBtn = new JButton(next);
//把上面Action出来的三个按钮添加到jToolBar工具条里面 //注意我们添加的是preBtn、pauseBtn、nextBtn。而不是pre、pause、next。如果是添加pre、pause、next的话,我们只能看到图标看不到文字 //文字是在preBtn、pauseBtn、nextBtn里面,因为我们是在preBtn、pauseBtn、nextBtn获取到了对应文字和对应事件 jToolBar.add(preBtn); jToolBar.addSeparator();//分割线,即一条浅灰色的线 jToolBar.add(pauseBtn); jToolBar.addSeparator();//分割线,即一条浅灰色的线 jToolBar.add(nextBtn);
//给jta文本域添加滚动条,然后再把已经添加上滚动条的jta放到jf窗口的中间区域,注意不写位置参数就默认放到中间区域 jf.add(new JScrollPane(jta)); //注意文本框默认是不支持滚动条的,需要我们在上一行的代码里写给jta文本域添加滚动条,才有滚动条
//设置工具条为可拖动 jToolBar.setFloatable(true);//默认是不可以拖动的,我们设为true之后就可以拖动了 //怎么拖动工具条:找到有很多小点点的地方,那个就是工具条的位置,鼠标点住有小点点的位置,往外拖即可。点击工具条的叉号,工具条就回到原来的位置
//把jToolBar工具条添加到jf窗口的北部即可 jf.add(jToolBar, BorderLayout.NORTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序 jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) { new a_7_0swing_基本组件_JTooBar().init(); }
}