Swing提供了JTooBar类来创建工具条,并且可以往JTooBar中添加多个工具按钮
JToolBar API:
| 方法名称 | 方法功能 | 
| JToolBar(String name,int orientation) | 创建一个名为name,方向为orientation的工具条对象,其orientation的是取值可以是SwingConstants,HORIZONTAL或SwingConatants.VERTICAL | 
| JButton add(Action a) | 通过Action对象为ToolBar工具条添加对应的工具按钮 | 
| addSeparator(Dimension size) | 向工具条中添加指定大小的分隔符 | 
| setFloatable(boolean b) | 设置工具条是否可以被拖动 | 
| setMargin(Insets m) | 设置工具条与工具按钮的边距 | 
| setOrientation(int o) | 设置工具条的方向 | 
add(Action a)方法:
上述API中add(Action a)这个方法比较难理解。Action接口是ActionListener的一个子接口,那么它就代表一个事件监听器,而这里add方法是在给工具条添加一个工具按钮,为什么传递的是一个事件监听器呢?
首先要明确的是不管是菜单条中的菜单项还是工具条中的工具按钮,最终肯定是需要点击来完成一些操作,所以JToolBar以及JMenu都提供了更加便捷的添加子组件的方法add(Action a),在这个方法的内部会做如下几件事情:
1.创建一个适用于该容器的组件(例如,在工具类中创建一个工具按钮);
2.从Action对象中获取对应的属性来设置该组件(通过Icon来设置按钮图标);
3.把Action监听器注册到刚才创建的组件上
代码演示:
package com.aynu.layout;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
public class JToolBarTest {
    JFrame jf =new JFrame("测试工具条");
    JTextArea jta = new JTextArea(6,35);
    //声明工具条相关内容
    JToolBar jToolBar = new JToolBar("播放工具条",SwingUtilities.HORIZONTAL);
    //创建三个Action对象
    //传递的参数,name和icon,最终在添加到工具条中时,会被拿出来作为按钮的名称和图标
    Action pre = new AbstractAction("上一曲") {
        @Override
        public void actionPerformed(ActionEvent e) {
            jta.append("上一曲.\n");
        }
    };
    Action pause = new AbstractAction("暂停") {
        @Override
        public void actionPerformed(ActionEvent e) {
            jta.append("暂停.\n");
        }
    };
    Action next = new AbstractAction("下一曲") {
        @Override
        public void actionPerformed(ActionEvent e) {
            jta.append("下一曲.\n");
        }
    };
    public void init(){
        //组装视图
        //通过Action对象来创建JButton
        JButton preBtn =new JButton(pre);
        jToolBar.add(pre);
        jToolBar.addSeparator();
        jToolBar.add(pause);
        jToolBar.addSeparator();
        jToolBar.add(next);
        //让工具条可以拖到
        jToolBar.setFloatable(true);
        jf.add(jToolBar, BorderLayout.NORTH);
        //文本框默认不支持滚动条
        //把一个组件设置到JScrollPane,那么该组件就支持滚动条了
        JScrollPane jScrollPane =new JScrollPane(jta);
        jf.add(jScrollPane);
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.pack();
        jf.setVisible(true);
    }
    public static void main(String[] args) {
        new JToolBarTest().init();
    }
}













![Error: (‘IM002‘, ‘[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序‘)](https://img-blog.csdnimg.cn/7be6085acf26443295d2a80b2c18d142.png)






