gpt4 book ai didi

java - setText 方法不更新 JLabel,getText() 返回正确的字符串

转载 作者:行者123 更新时间:2023-12-02 01:57:24 25 4
gpt4 key购买 nike

我花了大约两个小时努力解决这个问题,但仍然没有发生任何事情。我尝试使用 revalidate、paintImmediately 等多种方法更新 JLabel,尽管它没有改变最终结果。

public void notificationtos( ) {

jLabel2.setText( "Read our ToS first, please." );
jLabel2.revalidate();
jLabel2.paintImmediately(jLabel2.getVisibleRect());
System.out.println("debug" );
System.out.println( jLabel2.getText() );
}


private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
if( prihvaceniuslovi == false ) {
new notification().notificationtos();
new notification().setVisible(true);
}
}

另外,关于调试,这是上面代码的输出:

run:
debug
Read our ToS first, please.
BUILD SUCCESSFUL (total time: 3 seconds)

GUI 正常显示,但字符串与 JLabel 初始化时设置的字符串没有发生更改。

而不是照片中显示的下面的字符串... GUI Photo here

这个应该被显示

"Read our ToS first, please."

如果有人能真正帮助我,我将非常感激。谢谢!

编辑,这是解决方案代码,非常感谢@camickr

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
if( prihvaceniuslovi == false ) {
notification objekt = new notification();
objekt.setVisible(true);
objekt.notificationtos();
}
}

最佳答案

不需要repaint()或revalidate()或paintImmediately()。所需要做的就是调用 setText() 方法。

如果框架上的文本没有变化,那么您有两个标签:

  1. 您添加到框架中的一个,并且
  2. 另一个只是留在内存中的。

问题出在下面的代码上:

new notification().notificationtos();
new notification().setVisible(true);

您不应该继续创建组件的新实例。组件应该创建一次,然后保存对类中变量的引用,以便将来可以对组件进行更改。

阅读 Swing 教程中关于 How to Use Text Areas 的部分。它展示了如何不断向同一文本区域添加文本。您需要重新构建代码以使其与演示示例类似。

关于java - setText 方法不更新 JLabel,getText() 返回正确的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52122150/

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