【问题标题】:Disable a JButton from a listener that's in a separate class从位于单独类中的侦听器中禁用 JButton
【发布时间】:2013-11-12 09:10:09
【问题描述】:

我正在写一个相当大的课程,不想在这里发布。问题如下,如何引用不同类的构造函数中按下的按钮?比方说,我想在侦听器中执行一些操作后禁用它。如果侦听器是匿名者或者是 SomeClass 的内部类,我会像这样使用变量的名称:

button.setEnabled(false);

但是当我的听众是一个单独的班级时,我该怎么做呢?尝试使用 e.getModifiers().setEnabled(false) 和 e.getSource().setEnabled(false),没有用。

public class SomeClass extends JPanel {
    private JButton button = new JButton("Button");
    public SomeClass() {
        button.setActionCommand("button");
        button.addActionListener(new ButtonListener());
    }


    public static void main(String[] args) {
        // TODO code application logic here
    }
}
class ButtonListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) {
        String src = e.getActionCommand();
        if (src.equals("button")) {
            //some actions here
            //then            
        }        
    }    
}

【问题讨论】:

    标签: java swing jbutton actionlistener


    【解决方案1】:

    试试这个((JButton)e.getSource()).setEnabled(false)

    它必须工作)

    e.getSource()返回此事件所指的组件(docs)

    【讨论】:

    • 是的,它确实有效,非常感谢。尽管如此,在我看来,这种解决方案是某种“作弊”。我想知道是否有“官方”的方式来做到这一点?
    • 不是作弊,是官方方法
    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多