Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:如何在循环运行时从不同的类更新textArea?_Java_Swing - Fatal编程技术网

Java:如何在循环运行时从不同的类更新textArea?

Java:如何在循环运行时从不同的类更新textArea?,java,swing,Java,Swing,我正在开发一个用于预订的小程序,当我在循环中做一些事情时,我被困在如何从不同的类更新textArea 例如,我有一段代码: GUI类包含GUI的基本布局以及以下方法: public class MyGUI extends JFrame implements ActionListener { public MyGUI() { ... } .... public void setResultArea(String text) { resultArea.app

我正在开发一个用于预订的小程序,当我在循环中做一些事情时,我被困在如何从不同的类更新
textArea

例如,我有一段代码:

GUI类包含GUI的基本布局以及以下方法:

public class MyGUI extends JFrame implements ActionListener
{
  public MyGUI()
  {
     ...
  }
  ....
  public void setResultArea(String text)
  {
    resultArea.append(text);
  }
}
测试班

public static void writeToTextArea()
{
    while(true)
    {
           if(message = "Hello World")
      ... 
      modify text area
    }
}

我环顾四周,但找不到相关的东西。有什么想法吗?

最后,您的测试类需要对MyGUI类的引用。提供此参考的方法有多种:

  • 在测试类中创建一个
    setter
    方法,该方法获取并存储一个MyGUI
  • 为测试类指定一个构造函数,该构造函数接受并存储MyGUI
这并不考虑软件设计的最佳实践。这意味着,因为我不知道你的整个项目,我不能评论最好的方法


一旦测试类“拥有”MyGUI的实例,您就可以在编写“修改文本区域”的地方对其调用“setResultArea”方法。

考虑提供一个示例来说明您的问题。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应Swing也是单线程的,您应该避免在事件调度线程的上下文中运行长时间运行的进程,因为这将使UI看起来冻结,因为它无法处理事件队列中的新事件,包括重绘事件。同样,Swing不是线程安全的,您应该避免从EDT外部更新UI。一个常见的解决方案是使用
SwingWorker
,它具有
发布
/
过程
方法来处理更新UI,但允许您在EDT之外执行长时间运行的流程查看并获取更多详细信息其他人关心的是赋值表达式中应该有布尔值?@BenKnoble,或者事实上也不应该比较
String
。。。