【问题标题】:JFrame Displayed Text Won't updateJFrame 显示的文本不会更新
【发布时间】:2015-12-23 21:35:29
【问题描述】:

我正在开发一个垄断程序,该程序在单独的 JFrame 中显示所有游戏信息,例如名称、银行账户和拥有的财产。我启动并显示正确的信息都没有问题,但也没有根据要求更新。到目前为止,我已经尝试过 JPanes 和 JTextAreas 都遵循类似的代码。

JFrame infoFrame = new JFrame();
String finString;
JTextPane info = new JTextPane();

info.setBackground(Color.GRAY);
info.setEditable(true);
infoFrame.add(info);
infoFrameControl();
info.setEditable(false);

void infoFrameControl(){
    finString = "Current Standings\n=================\n";

    for(int i=0; i<players.size(); i++){

        //this loop determines what is stored in finString
        //I know this works because I've printed it in the console
    }

    finString += "\n";
    System.out.println(finString);

    info.setText(finString);    
}

在我使用此代码从另一个类调用此方法之前,这工作正常

mn.info.setEditable(true);
mn.infoFrameControl();
mn.info.setEditable(false);

其中 mn 是包含 infoFrameControl() 类的类的对象。在这一点上,它从未更新过。我也使用过 info.updateUI() 但这也没有奏效。我做错了什么。

【问题讨论】:

  • 为了获得更好的帮助,请考虑创建和发布Minimal, Complete, and Verifiable Example Program,这是一个小而完整的程序,只有必要的代码来演示您的问题,我们可以复制、粘贴、编译和运行而无需修改。
  • 可能的原因是,您尝试更新的实例不是实际显示在屏幕上的实例
  • 如何确保显示正确的实例?
  • 除非我遗漏了什么,否则我看不出有什么办法可以根据您迄今为止发布的内容进行判断,因此我提出上述请求的原因是您发布一个简化但可编译和可运行的程序,为我们演示您的错误,minimal reproducible examplesscce。我能给您的唯一建议是检查您的代码并搜索您调用InfoFrameControl 构造函数的任何位置。无论您在哪里执行此操作,都会创建一个新实例。
  • 看看我的Dice Game 文章,看看它是否有助于解释什么是 GUI 模型。

标签: java swing jframe jtextarea jtextpane


【解决方案1】:

我不太精通Swing,但也许你应该在JFrame 中使用JLabel 而不是JTextPane?您可以找到文档here,但切换文本似乎和上面显示的一样容易。

【讨论】:

  • 我相信我也尝试过 JLabels。我只是忘了说。我也没有运气
猜你喜欢
  • 2021-01-11
  • 1970-01-01
  • 2016-06-08
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多