我有关于修改按钮背景的问题。我正在使用 netbeans gui 构建器来构建表单。我正在尝试在第二个框架打开时更改按钮背景,并在第二个框架关闭时将其调回。
public void update(boolean x){
if(x==true){
circleButton.setOpaque(true);
circleButton.setBackground(new java.awt.Color(0, 0, 0));
System.out.println("testoutput");
}
}
这是我的第一个类的更新方法。
我将窗口监听器添加到第二帧。
private void formWindowOpened(java.awt.event.WindowEvent evt) {
isitopen = true;
//this is first class which includes button
homework hwork = new homework();
hwork.update(isitopen);
System.out.println("testoutput2");
}
我得到了 2 个测试输出,但按钮的颜色没有改变。
我可以做什么来解决这个问题?
最佳答案
您正在 formWindowOpened(...)
方法中创建一个新的作业对象,该对象与显示的作业对象完全无关,并且更改新对象的状态不会产生任何影响。对显示效果的影响。
一个简单且错误的解决方案是使用静态字段或方法。
相反,一个简单的解决方案是使用 formWindowOpened(...)
方法为调用提供对显示的作业对象的有效引用,可以通过以下方式完成构造函数参数或 setHomework(...)
方法。
更好、更简单的解决方案:
- 使第二个窗口成为模态 JDialog,而不是 JFrame
- 这样作业就会知道窗口何时打开,并可以设置自己的按钮颜色。当第二个窗口打开时,调用类中的程序流将被暂停,并且仅在第二个窗口关闭时才恢复 - 就像使用 JOptionPane 一样。
有关此内容的更多信息,请参阅 The Use of Multiple JFrames, Good/Bad Practice?
顺便说一句,您将需要学习和使用 Java naming conventions 。变量名应全部以小写字母开头,而类名应以大写字母开头。学习并遵循这一点将使我们更好地理解您的代码,并且将使您更好地理解其他人的代码。
关于java - 无法通过其他方法更改/修改按钮背景 - JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933266/