java jpanel addactionlistener,组成Swing组件:如何添加添加ActionListener的功能?

f799b64e421b4a7c059f8fa2727e815b.png

叮当猫咪

我将使用@ JToggelButton,如这里所示,或委托给包含的按钮,如@duffymo建议的那样。如果您确实需要定制OnOffSwitchEvent,则在EventListenerList其中概述了标准接线,每个接线盒中都包含一个实例JComponent。附录:这是一个委派给ButtonGroup包含两个按钮的示例。标签上装饰有符号,但是任何实现Icon都更加灵活。import java.awt.Color;import java.awt.EventQueue;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;import javax.swing.JComponent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JToggleButton;/** @see https://stackoverflow.com/questions/6035834 */public class ButtonGroupTest extends JComponent {    private static final String ON = "On";    private static final String OFF = "Off";    private final JToggleButton bOn = new JToggleButton(ON);    private final JToggleButton bOff = new JToggleButton(OFF);    private final JLabel label = new JLabel(" \u2301 ");    private final ButtonHandler handler = new ButtonHandler();    public ButtonGroupTest() {        this.setLayout(new FlowLayout());        label.setOpaque(true);        label.setBackground(Color.red);        label.setFont(label.getFont().deriveFont(36f));        ButtonGroup bg = new ButtonGroup();        this.add(bOn);        bg.add(bOn);        bOn.setSelected(true);        bOn.addActionListener(handler);        this.add(label);        this.add(bOff);        bg.add(bOff);        bOff.addActionListener(handler);    }    public void addActionListener(ActionListener listener) {        bOn.addActionListener(listener);        bOff.addActionListener(listener);    }    private class ButtonHandler implements ActionListener {        @Override        public void actionPerformed(ActionEvent e) {            String cmd = e.getActionCommand();            if (ON.equals(cmd)) {                label.setBackground(Color.red);            } else {                label.setBackground(Color.black);            }        }    }    private void display() {        JFrame f = new JFrame("ButtonGroupTest");        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        f.add(this);        f.pack();        f.setLocationRelativeTo(null);        f.setVisible(true);    }    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            @Override            public void run() {                new ButtonGroupTest().display();            }        });    }}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值