gpt4 book ai didi

java - 当按下另一个 Jbutton 时禁用 java 中的 Jbutton

转载 作者:行者123 更新时间:2023-11-30 08:10:09 26 4
gpt4 key购买 nike

我的代码是:

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); 的东西,但我不知道如何在这种情况下使用它。

最佳答案

您将需要对您尝试禁用的按钮的引用,这将需要您稍微更改代码...

首先,您需要 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 上下文中访问它们

关于java - 当按下另一个 Jbutton 时禁用 java 中的 Jbutton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30497920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com