首頁 >Java >java教程 >如何根據資料庫狀態動態改變Java Swing中的按鈕顏色?

如何根據資料庫狀態動態改變Java Swing中的按鈕顏色?

DDD
DDD原創
2024-12-26 15:09:14674瀏覽

How to Dynamically Change Button Colors in Java Swing Based on Database Status?

Java Swing 按鈕顏色

在此範例中,我們將探索如何根據資料庫狀態的特定變更動態變更 Java Swing 中按鈕的顏色。我們的目標是將綠色分配給代表餐廳中無人值守餐桌的按鈕,將橙色分配給那些待處理訂單的按鈕,並為正在處理的桌子實現閃爍效果。

要更改按鈕的顏色,我們可以利用setForeground() 和 setBackground() 方法。為了更改文字​​顏色,我們使用 setForeground(),但請注意 setBackground() 在不同平台上可能不會產生一致的結果。因此,我們建議改用彩色面板,如下面的程式碼片段所示:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class ButtonTest extends JPanel implements ActionListener {

    private static final int N = 4;
    private static final Random rnd = new Random();
    private final Timer timer = new Timer(1000, this);
    private final List<ButtonPanel> panels = new ArrayList<>();

    public ButtonTest() {
        this.setLayout(new GridLayout(N, N, N, N));
        for (int i = 0; i < N * N; i++) {
            ButtonPanel bp = new ButtonPanel(i);
            panels.add(bp);
            this.add(bp);
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        for (JPanel p : panels) {
            p.setBackground(new Color(rnd.nextInt()));
        }
    }

    private static class ButtonPanel extends JPanel {

        public ButtonPanel(int i) {
            this.setBackground(new Color(rnd.nextInt()));
            this.add(new JButton("Button " + String.valueOf(i)));
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame f = new JFrame("ButtonTest");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                ButtonTest bt = new ButtonTest();
                f.add(bt);
                f.pack();
                f.setLocationRelativeTo(null);
                f.setVisible(true);
                bt.timer.start();
            }
        });
    }
}

在此程式碼中,ButtonPanel 內部類別擴展了JPanel,並包含一個帶有標識按鈕編號的文字的按鈕。 setBackground() 方法用於動態設定每個按鈕面板的顏色。

要為指示正在處理的表格的按鈕實現閃爍效果,可以使用 Timer 物件。 Timer 會定期觸發 ActionEvent,在事件處理程序中,您可以變更按鈕的顏色以建立閃爍效果。

以上是如何根據資料庫狀態動態改變Java Swing中的按鈕顏色?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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