首頁 > Java > java教程 > 為什麼我的 javax.swing 計時器重複但我的 ActionListener 不更新文字欄位的顏色?

為什麼我的 javax.swing 計時器重複但我的 ActionListener 不更新文字欄位的顏色?

Susan Sarandon
發布: 2024-10-29 11:21:29
原創
932 人瀏覽過

Why Does My javax.swing Timer Repeat but My ActionListener Doesn't Update the Color of My Text Field?

javax.swing 定時器重複成功,但 ActionListener 無法回應

在此程式碼片段中,作者旨在使用閃爍來交替文字欄位的背景色彩影響。計時器設定似乎運作正常,重複 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中文網其他相關文章!

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