我正在尝试实现一个包含两个按钮Yes
和No
的简单窗口。
点击Yes
时,我想停用No
按钮,按下No
时,我想要停用Yes
按钮。
我已实施:
JButton btnYes = new JButton("Yes");
contentPane.add(btnYes);
btnYes.setActionCommand("Yes");
btnYes.addActionListener(this);
... No
按钮的内容相同......
现在我正在用这种方法捕捉事件:
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Yes"))
{
//I know how to get the button that caused the event
//but I don't know how to disable the OTHER button.
JButton source = (JButton)e.getSource();
//Handle the source button...
}
}
在上面的方法中,我可以访问导致事件的按钮,但不能访问其他按钮。
获取按钮的最佳方式是什么?
答案 0 :(得分:1)
您应该只将ActionListener实现为Dialog类的嵌套类,在这种情况下,您将拥有对外部类的所有字段的完全访问权限(在创建它们时应该存储对按钮的引用)。
坏的解决方案(不应该使用)仍然存在:通过JButton的getParent()导航到battens,然后通过parent children的getChildren()导航。只是为了证明它无论如何都是可能的。
答案 1 :(得分:1)
您可以使用JButton
数组作为类成员变量,并检查 didnt 导致事件的实例:
for (JButton button: buttonArray) {
if (button != source) {
button.setEnabled(false); // disable the other button
}
}