在此範例中,我們將探索如何根據資料庫狀態的特定變更動態變更 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中文網其他相關文章!