在此程式碼片段中,作者旨在使用閃爍來交替文字欄位的背景色彩影響。計時器設定似乎運作正常,重複 Flash 類別中概述的操作。然而,僅在初始交替期間觀察到所需的顏色變化。
經過進一步檢查,很明顯,問題不在於計時器的重複執行,而在於儘管預期的顏色變化,但缺乏視覺更新。要解決此問題,請確保對文字欄位背景顏色所做的變更反映在顯示中至關重要。
一個有效的方法是重寫封裝文字的自訂面板類別中的 PaintComponent 方法場地。在此方法中,應使用更新的背景顏色呈現文字。這種機制允許在計時器觸發顏色變化時進行持續更新。
這是一個結合了這種方法的修改示例:
<code class="java">public class FlashingPanel extends JPanel { private javax.swing.Timer timer; private JTextField textField; private boolean flashing = false; public FlashingPanel() { textField = new JTextField(10); add(textField); timer = new javax.swing.Timer(1000, this); timer.start(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (flashing) { textField.setBackground(Color.white); } else { textField.setBackground(Color.pink); } flashing = !flashing; } @Override public void actionPerformed(ActionEvent e) { repaint(); } }</code>
在這個增強的程式碼中,重寫了paintComponent方法以直接應用文字欄位的背景顏色發生變化,確保每次間隔都有視覺更新。結果,文字欄位的背景顏色將按預期重複且連續地閃爍。
以上是為什麼我的 javax.swing 計時器重複但我的 ActionListener 不更新文字欄位的顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!