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

标签 java swing jlabel gettext settext

我花了大约两个小时努力解决这个问题,但仍然没有发生任何事情。我尝试使用 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/

相关文章:

java - 只读模式下不允许写操作(FlushMode.MANUAL) : with grails hibernate

c# - 局部变量或类字段?

java - 如何使用 JTextArea 将新选项卡添加到 JTabbedPane

java - 无法阻止面板变得太小

java - 在 JLayeredPane 中分层 JLabels

Java JLabel在渲染HTML时忽略前景色的alpha值

java - 将 log4j stdout 重定向到 InputStream

java - 如何使用 JAR 文件中的外部类作为我的程序中的类之一?

java - 仅 RGB JColorChooser (Java 7)

java - 在数组中为菜单创建对象