亲爱的大家,我遇到了挥杆相关的问题。由于违反公司政策,我无法共享代码,因此我将尽力解释该问题。
简而言之,我创建了一个扩展包含JLabel的JWindow的类。JLabel的文本是通过计时器对象随机更新的,该计时器对象使用scheduleAtFixedRate方法每50毫秒实例化一个TimerTask。JLabel中的值是通过在一个单独的线程(称为传输线程)中调用一个方法来检索的,该线程负责将数据传输到某个设备。问题是JWindow出现在屏幕上没有任何内容,直到与设备的传输结束为止,然后我将获得传输线程的最后结果。这是什么问题?
问题是您访问了事件调度线程(EDT)之外的其他线程中的swing组件。这是禁止的。
每个swing组件的Javadoc都有指向此页面的链接:http : //download.oracle.com/javase/6/docs/api/javax/swing/package- summary.html#threading,其中详细介绍了线程策略。