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组件_练习
xxxxxxxxxx
package 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();
}
}