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类的引用。提供此参考的方法有多种:
- 在测试类中创建一个
方法,该方法获取并存储一个MyGUI李>setter
- 为测试类指定一个构造函数,该构造函数接受并存储MyGUI
一旦测试类“拥有”MyGUI的实例,您就可以在编写“修改文本区域”的地方对其调用“setResultArea”方法。考虑提供一个示例来说明您的问题。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将减少混乱和更好的响应Swing也是单线程的,您应该避免在事件调度线程的上下文中运行长时间运行的进程,因为这将使UI看起来冻结,因为它无法处理事件队列中的新事件,包括重绘事件。同样,Swing不是线程安全的,您应该避免从EDT外部更新UI。一个常见的解决方案是使用
SwingWorker
,它具有发布
/过程
方法来处理更新UI,但允许您在EDT之外执行长时间运行的流程查看并获取更多详细信息其他人关心的是赋值表达式中应该有布尔值?@BenKnoble,或者事实上也不应该比较String
。。。