Javax.swing 定時器重複,但ActionListener 不執行
簡介
簡介在嘗試🎜>在嘗試在為文字欄位建立閃爍的背景顏色時,使用者遇到了一個特殊問題:計時器函數按預期執行,但ActionListener 並沒有觸發顏色變更。這種差異使背景顏色在初始切換後保持不變。
計時器設定此場景中的計時器設定遵循設定 Swing 的行業標準指南具有合理延遲、重複啟用和 ActionListener 的計時器。計時器啟動實作 ActionListener 介面的 Flash 類別來處理顏色變化。
ActionListener 實作ActionListener 在嵌套靜態類別中定義,包含基於內部布林變數閃爍器切換背景顏色的邏輯。雖然調試確認操作正在執行,但初始切換後顏色變化並未反映在螢幕上。
根本原因和解決方案問題的關鍵問題在於 Swing 元件(包括文字欄位)需要明確地呼叫 repaint() 方法來更新其外觀。如果沒有此調用,透過 setBackground() 或其他影響外觀的方法所做的任何更改將對使用者不可見。
修訂的實作<code class="java">static class Flash implements ActionListener { public void actionPerformed(ActionEvent evt) { if (flasher) { SpreademPanel.historyPnl.NameTxt.setBackground(Color.white); } else { SpreademPanel.historyPnl.NameTxt.setBackground(Color.pink); } **SpreademPanel.historyPnl.NameTxt.repaint();** // Trigger repaint flasher = !flasher; } //actionPerformed } //Flash</code>
以上是為什麼我的 Swing Timer ActionListener 不更新文字欄位的背景顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!