为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

当年话下 2021-08-25 10:16:34
我努力解决这个问题大约 2 个小时,但仍然没有发生任何事情。我尝试使用多种方法更新 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:debugRead our ToS first, please.BUILD SUCCESSFUL (total time: 3 seconds)GUI 正常显示,但字符串并未从 JLabel 初始化时设置的字符串更改。而不是下面的这个字符串显示在照片中... 这个应该被展示“请先阅读我们的 ToS。”如果有人能真正帮助我,我将不胜感激。谢谢!编辑,这是解决方案代码,非常感谢@camickrprivate void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                          if( prihvaceniuslovi == false ) {        notification objekt = new notification();        objekt.setVisible(true);        objekt.notificationtos();    }}
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

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


如果框架上的文本没有更改,则您有两个标签:


您添加到框架中的一个

另一个只是坐在记忆中。

问题是下面的代码:


new notification().notificationtos();

new notification().setVisible(true);

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


阅读 Swing 教程中关于如何使用文本区域的部分。它展示了如何向同一文本区域添加文本。您需要重构代码以与演示示例类似。


查看完整回答
反对 回复 2021-08-25
  • 1 回答
  • 0 关注
  • 657 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信