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
,所以当它们被点击时我可以在我的程序中调用它们?
答案 0 :(得分:46)
两种方式:
1。在您的班级中实施ActionListener,然后使用jBtnSelection.addActionListener(this);
稍后,您必须定义一个menthod public void actionPerformed(ActionEvent e)
。但是,对多个按钮执行此操作可能会造成混淆,因为actionPerformed
方法必须检查每个事件的来源(e.getSource()
)以查看它来自哪个按钮。
2。使用匿名内部类:
jBtnSelection.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
selectionButtonPressed();
}
} );
稍后,您必须定义selectionButtonPressed()
。
当您有多个按钮时,这会更好用,因为您对处理操作的各个方法的调用就在按钮定义的旁边。
第二种方法还允许您直接调用选择方法。在这种情况下,如果发生其他一些操作,你也可以调用selectionButtonPressed()
- 例如,当计时器熄灭时或某些东西(但在这种情况下,你的方法会被命名为不同的东西,也许是selectionChanged()
)
答案 1 :(得分:7)
您最好的选择是查看Java Swing tutorials,特别是tutorial on Buttons。
简短的代码段是:
jBtnDrawCircle.addActionListener( /*class that implements ActionListener*/ );
答案 2 :(得分:1)
idk如果可行,但我设置了变量名
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
}
} );
}
}
答案 3 :(得分:0)
我没有完全关注,但要添加动作侦听器,只需调用addActionListener(来自Abstract Button)。如果这不能完全回答您的问题,您能提供更多详细信息吗?