簡體   English   中英

從另一個線程更新 JLabel

[英]Update JLabel from another thread

親愛的伙計們,我遇到了與 swing 相關的問題。 我不能分享代碼,因為它違反了公司政策,所以我會盡力解釋這個問題。

簡而言之,我創建了一個 class,它擴展了包含 JLabel 的 JWindow。 此 JLabel 的文本通過計時器 object 隨機更新,該計時器使用 scheduleAtFixedRate 方法每 50 毫秒實例化一個 TimerTask。 JLabel 中的值是通過在一個單獨的線程(我們稱之為傳輸線程)中調用一個方法來檢索的,該線程處理將數據傳輸到某個設備。 問題是 JWindow 出現在屏幕上沒有任何內容,直到傳輸到設備結束,然后我會得到傳輸線程的最后一個結果。 會有什么問題?

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

問題是您在除事件調度線程 (EDT) 之外的其他線程中訪問 swing 組件。 這是禁止的。

The javadoc of every swing componenthas a link to this page: http://download.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading , where the threading policy is explained in details .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM