首頁 > Java > java教程 > 在 JPanel 上組合 JTextField 和動畫繪圖時,如何防止 Swing 的線程問題?

在 JPanel 上組合 JTextField 和動畫繪圖時,如何防止 Swing 的線程問題?

Linda Hamilton
發布: 2024-12-31 20:54:14
原創
151 人瀏覽過

How Can I Prevent Swing's Threading Issues When Combining JTextFields and Animated Drawing on a JPanel?

JPanel 上活動繪圖之上的 JTextFields:線程問題

假設您想在可以添加哪些 Swing 使用者介面元素。這涉及到在不需要更新每一幀的背景上對紅色矩形進行動畫處理。相反,背景被渲染到 BufferedImage 上,並且僅重繪了清除矩形先前位置所需的部分。

但是,在將 JTextField 添加到 JPanel 並關注它之後,清除了先前的位置每次遊標閃爍時矩形的失敗。這是因為 Swing 不是線程安全的,並且圖像是非同步繪製的。

要解決此問題,您需要呼叫超類別的方法並在PaintComponent() 方法中刪除舊的繪製:

或者,您可以根據需要簡化程式碼並進行最佳化。例如,您可能不需要使用插入、額外緩衝區或元件偵聽器。

附錄:

在建構子中設定背景顏色就不需要使用在paintComponent()中填充面板,而super.paintComponent()允許文字欄位正常運作。如前所述,這種解決方法很脆弱。最好簡化程式碼並根據需要進行最佳化。

附錄2:

super.paintComponent() 呼叫UI delegate 的update() 方法,此方法填入如果其opaque 屬性為true,則指定元件及其背景顏色。您可以使用 setOpaque(false) 來防止這種情況。

以上是在 JPanel 上組合 JTextField 和動畫繪圖時,如何防止 Swing 的線程問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板