private JButton jBtnDrawCircle = new JButton("Circle");
private JButton jBtnDrawSquare = new JButton("Square");
private JButton jBtnDrawTriangle = new JButton("Triangle");
private JButton jBtnSelection = new JButton("Selection");
我如何向这些按钮添加动作侦听器,以便我可以从主要方法调用 actionperformed
,以便在单击它们时我可以在我的程序中调用它们?
原文由 user37037 发布,翻译遵循 CC BY-SA 4.0 许可协议
两种方式:
1. 在你的类中实现 ActionListener,然后使用
jBtnSelection.addActionListener(this);
稍后,你必须定义一个方法,public void actionPerformed(ActionEvent e)
。但是,对多个按钮执行此操作可能会造成混淆,因为actionPerformed
方法必须检查每个事件的来源 (e.getSource()
) 以查看它来自哪个按钮。2. 使用匿名内部类:
稍后,您必须定义
selectionButtonPressed()
。当您有多个按钮时,这种方法效果更好,因为您对用于处理操作的各个方法的调用紧挨着按钮的定义。2、更新。 由于 Java 8 引入了 lambda 表达式,您可以说与 #2 基本相同的内容,但使用更少的字符:
在这种情况下,
e
是 ActionEvent。这是有效的,因为 ActionListener 接口只有一个方法,actionPerformed(ActionEvent e)
。第二种方法还允许您直接调用
selectionButtonPressed
方法。在这种情况下,您可以调用selectionButtonPressed()
如果也发生了一些其他操作 - 例如,当计时器关闭或其他操作时(但在这种情况下,您的方法将被命名为不同的东西,也许selectionChanged()
)。