gpt4 book ai didi

java - 从后台线程更新Java Swing组件

转载 作者:行者123 更新时间:2023-12-03 11:51:05 26 4
gpt4 key购买 nike

我正在研究一个用于从客户端套接字接收数据的项目。用户界面包含一个文本区域,以显示接收到的数据。
将服务器线程中接收到的数据传递回文本区域的最佳方法是什么?
目前我正在做以下事情。

  • 启动JFrame Java应用程序
  • 创建一个Server对象,并将JTextArea对象传递给它。
  • 在单独的线程
  • 中启动套接字服务器
  • 当从客户端接收到新消息时,线程会像下面的
  • 一样更新JTextArea字段

    jtextarea.setText(newMessage);

    我的方法正确吗?

    最佳答案

    不,数字4是错误的,因为您要从Swing事件线程EDT的更改Swing组件的状态。可以将jtextarea.setText(newMessage);包装在Runnable内,并通过以下方式在Swing事件线程上排队:SwingUtilities.invokeLater(Runnable r),或者将SwingWorker用于后台线程,并使用发布/处理方法对从后台线程更新Swing GUI。

    请检查:

  • SwingWorker with publish/process example
  • Lesson: Concurrency in Swing
  • 关于java - 从后台线程更新Java Swing组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527741/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com