0
点赞
收藏
分享

微信扫一扫

linux pinctrl 和 gpio 子系统 LED驱动

迎月兮 2023-05-12 阅读 84

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();
    }
}

 

举报

相关推荐

0 条评论