0

亲爱的伙计们,我遇到了与挥杆相关的问题。我不能分享代码,因为它违反了公司政策,所以我会尽力解释这个问题。

简而言之,我创建了一个扩展包含 JLabel 的 JWindow 的类。此 JLabel 的文本通过一个计时器对象随机更新,该对象使用 scheduleAtFixedRate 方法每 50 毫秒实例化一个 TimerTask。JLabel 中的值是通过在一个单独的线程(我们称之为传输线程)中调用一个方法来检索的,该线程处理将数据传输到某个设备。问题是 JWindow 出现在屏幕上没有任何内容,直到传输到设备结束,然后我会得到传输线程的最后一个结果。会有什么问题?

4

2 回答 2

2

如本例所示,代替java.util.Timer,javax.swing.Timer可能更方便。

于 2011-05-05T09:38:24.400 回答
1

问题是您在事件调度线程 (EDT) 之外的其他线程中访问 swing 组件。这是禁止的。

每个 swing 组件的 javadoc 都有指向此页面的链接:http: //download.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading,其中详细解释了线程策略.

于 2011-05-05T09:39:53.000 回答