我有关于修改按钮背景的问题。我正在使用netbeans gui builder来构建表单。我正在尝试在第二帧打开时更改按钮背景,并在第二帧关闭时将其转回。
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次测试输出,但按钮的颜色没有变化。
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您在formWindowOpened(...)
方法中创建了一个新的家庭作业对象,一个与显示的家庭作业完全无关,并且更改新对象的状态对所显示的对象没有影响。
简单且 错误 解决方案是使用静态字段或方法。
相反,一个简单的解决方案是给你的formWindowOpened(...)
方法提供一个有效参考给显示的家庭作业对象,可以使用构造函数参数或{{1 }} 方法。
更好,更简单的解决方案:
有关详情,请参阅The Use of Multiple JFrames, Good/Bad Practice?
另外,您需要学习并使用Java naming conventions。变量名都应以较低的字母开头,而类名以大写字母开头。了解并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他代码。