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

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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)