如何从ActionEvent中获取所有JButton组件的源代码



我正在尝试实现一个包含两个按钮YesNo的简单窗口。

单击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...
    }
}

在上面的方法中,我可以访问导致事件的按钮,但不能访问其他按钮。

获得按钮的最佳方式是什么?

您应该将ActionListener实现为Dialog类的嵌套类,在这种情况下,您将可以完全访问外部类的所有字段(在创建按钮时,您应该在其中存储对按钮的引用(。

坏的肮脏解决方案(不应该使用(仍然存在:通过JButton的getParent((,然后通过父子关系的getChildren((导航到battens。只是为了表明这是可能的。

您可以使用JButton数组作为类成员变量,并检查哪个实例没有导致事件:

for (JButton button: buttonArray) {
   if (button != source) {
      button.setEnabled(false); // disable the other button
   }
}

相关内容

  • 没有找到相关文章

最新更新