setText 方法不更新 JLabel、getText() returns 正确的字符串
setText method doesn't update JLabel, getText() returns correct string
我费了 2 个小时才解决这个问题,但仍然没有任何反应。我已经尝试使用多种方法更新 JLabel,例如 revalidate、paintImmediately 等,尽管它并没有改变最终结果。
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() 方法。
如果框架上的文本没有变化,那么您有两个标签:
- 您添加到框架中的一个和
- 另一个只留在记忆中的。
问题出在下面的代码上:
new notification().notificationtos();
new notification().setVisible(true);
您不应继续创建组件的新实例。一个组件应该被创建一次,然后你在你的 class 中保存一个对变量的引用,你可以在将来对组件进行更改。
阅读 How to Use Text Areas 上的 Swing 教程部分。它显示了如何继续向同一文本区域添加文本。您需要重组您的代码以类似于演示示例。
我费了 2 个小时才解决这个问题,但仍然没有任何反应。我已经尝试使用多种方法更新 JLabel,例如 revalidate、paintImmediately 等,尽管它并没有改变最终结果。
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() 方法。
如果框架上的文本没有变化,那么您有两个标签:
- 您添加到框架中的一个和
- 另一个只留在记忆中的。
问题出在下面的代码上:
new notification().notificationtos();
new notification().setVisible(true);
您不应继续创建组件的新实例。一个组件应该被创建一次,然后你在你的 class 中保存一个对变量的引用,你可以在将来对组件进行更改。
阅读 How to Use Text Areas 上的 Swing 教程部分。它显示了如何继续向同一文本区域添加文本。您需要重组您的代码以类似于演示示例。