如何从另一个JPanel / JFrame / etc添加String JList元素?

时间:2012-07-07 21:22:14

标签: java swing concurrency jlist swingworker

我知道如何将元素实际添加到JList本身,但我不确定如何在更新实际发生时使我的事件日志(使用JList和DefaultListModel)更新。似乎我的应用程序冻结了所有条目,当它结束时显示。请帮帮忙?

1 个答案:

答案 0 :(得分:3)

我百分百肯定你有一个Swing并发问题,你正在用一个长时间运行的进程来绑定Swing事件调度线程或EDT。问题是Swing even线程负责执行所有Swing绘图和用户交互。如果它与一些长时间运行的进程(如文件或数据库输入或输出)捆绑在一起,则它无法执行其职责,整个GUI将被冻结。解决方案是使用后台线程(如SwingWorker),以便长时间运行的进程不会占用EDT,但要注意更新Swing组件,例如JList或其模型 on 美国东部时间。

请查看Swing concurrency tutorial以获取有关问题及其解决方案的更多详细信息。