gpt4 book ai didi

java - 无法通过其他方法更改/修改按钮背景 - JAVA

转载 作者:行者123 更新时间:2023-11-30 07:07:00 25 4
gpt4 key购买 nike

我有关于修改按钮背景的问题。我正在使用 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/

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