[英]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.