如何在 Java 中将 ActionListener 添加到 JButton

问题描述 投票:0回答:4
private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");

如何向这些按钮添加动作侦听器,以便从主方法中我可以调用它们,这样当单击它们时我可以在程序中调用它们?

    

java swing user-interface jbutton actionlistener
4个回答
68
投票

1.

在你的类中实现 ActionListener,然后使用 actionperformed 稍后,你必须定义一个方法,

jBtnSelection.addActionListener(this);
。但是,对多个按钮执行此操作可能会令人困惑,因为
public void actionPerformed(ActionEvent e)
方法必须检查每个事件的源 (
actionPerformed
) 以查看它来自哪个按钮。

2.

使用匿名内部类: e.getSource()

稍后,您必须定义
jBtnSelection.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { selectionButtonPressed(); } } );

。 当您有多个按钮时,这种方法效果更好,因为您对处理操作的各个方法的调用就在按钮的定义旁边。

2,已更新。

由于 Java 8 引入了 lambda 表达式,您可以说与 #2 基本相同的内容,但使用更少的字符: selectionButtonPressed()

在本例中,
jBtnSelection.addActionListener(e -> selectionButtonPressed());

是 ActionEvent。这是可行的,因为 ActionListener 接口只有一个方法,

e
第二种方法还允许您直接调用

actionPerformed(ActionEvent e)

方法。在这种情况下,如果发生其他一些操作,您也可以调用

selectionButtonPressed
- 例如,当计时器关闭或发生其他情况时(但在这种情况下,您的方法将被命名为不同的名称,也许是
selectionButtonPressed()
)。
    


8
投票
Java Swing 教程

,特别是 关于按钮的教程 简短的代码片段是:

selectionChanged()



3
投票

jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );



0
投票

ActionEvent e) -> 而不仅仅是 e ->: public abstract class beep implements ActionListener { public static void main(String[] args) { JFrame f = new JFrame("beeper"); JButton button = new JButton("Beep me"); f.setVisible(true); f.setSize(300, 200); f.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Insert code here } }); } }

© www.soinside.com 2019 - 2024. All rights reserved.