[英]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
,但根据您设置代码的方式,该按钮将不起作用。 相反,您将需要制作circle
和machine
实例字段,以便能够从ActionListener
上下文中访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.