ホームページ >Java >&#&チュートリアル >データベースのステータスに基づいて Java Swing のボタンの色を動的に変更する方法

データベースのステータスに基づいて Java Swing のボタンの色を動的に変更する方法

DDD
DDDオリジナル
2024-12-26 15:09:14678ブラウズ

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 オブジェクトを使用できます。タイマーは一定の間隔で ActionEvent をトリガーし、イベント ハンドラー内でボタンの色を変更して点滅効果を作成できます。

以上がデータベースのステータスに基づいて Java Swing のボタンの色を動的に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。