繁体   English   中英

当按下另一个Jbutton时在Java中禁用Jbutton

[英]Disabling a Jbutton in java when another Jbutton is pressed

我的代码是:

public FactoryWindow()
{
    getPreferredSize();
    setTitle("Bounce");
    JPanel buttonPanel = new JPanel();
    add(comp, BorderLayout.CENTER);
    addButton(buttonPanel, "Circle", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                comp.addShape();
            }
        });
    addButton(buttonPanel, "Machine", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                comp.addMachine();

            }
        });
    addButton(buttonPanel, "Close", new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                System.exit(0);
            }
        });
    add(buttonPanel, BorderLayout.SOUTH);
    pack();
}

这是一个构造函数。 该类扩展了JFrame

public void addButton(Container c, String title, ActionListener listener)
{
   JButton button = new JButton(title);
   c.add(button);
   button.addActionListener(listener);
}

我希望能够在按下机器按钮时禁用“形状”按钮

我将如何去做?

我知道有类似buttonName.setEnabled(false);东西buttonName.setEnabled(false); 但我不知道如何在这种情况下使用它。

您将需要引用要禁用的按钮,这将需要您稍微更改代码。

首先,您需要使用addButton方法返回它创建的按钮。

public JButton addButton(Container c, String title, ActionListener listener) {
    JButton button = new JButton(title);
    c.add(button);
    button.addActionListener(listener);
    return button;
}

然后,您需要将结果分配给变量...

JButton cirlce = null;
JButton machine = null;

cirlce = addButton(buttonPanel, "Circle", new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        comp.addShape();
    }
});

然后,您可以从ActionListener访问它。

machine = addButton(buttonPanel, "Machine", new ActionListener() {
    public void actionPerformed(ActionEvent event) {
        comp.addMachine();
        circle.setEnabled(false);
    }
});

现在,如果您使用的是Java 6(我认为是Java 7),它会抱怨该按钮应该是final ,但根据您设置代码的方式,该按钮将不起作用。 相反,您将需要制作circlemachine实例字段,以便能够从ActionListener上下文中访问它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM