Heim >Java >javaLernprogramm >Wie ändere ich die Schaltflächenfarben in Java Swing basierend auf dem Datenbankstatus dynamisch?
In diesem Beispiel untersuchen wir, wie man die Farben von Schaltflächen in Java Swing basierend auf bestimmten Änderungen in einem Datenbankstatus dynamisch ändern kann. Unser Ziel ist es, Schaltflächen für unbesetzte Tische in einem Restaurant Grün zuzuweisen, Schaltflächen mit ausstehenden Bestellungen Orange zuzuweisen und einen Blinkeffekt für in Bearbeitung befindliche Tische zu implementieren.
Um die Farben der Schaltflächen zu ändern, können wir die nutzen setForeground()- und setBackground()-Methoden. Zum Ändern der Textfarbe verwenden wir setForeground(). Beachten Sie jedoch, dass setBackground() auf verschiedenen Plattformen möglicherweise keine konsistenten Ergebnisse liefert. Daher empfehlen wir stattdessen die Verwendung eines farbigen Panels, wie im folgenden Codeausschnitt gezeigt:
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(); } }); } }
In diesem Code erweitert die innere Klasse ButtonPanel JPanel und enthält eine Schaltfläche, deren Text die Schaltflächennummer identifiziert. Die setBackground()-Methode wird verwendet, um die Farbe jedes Schaltflächenfelds dynamisch festzulegen.
Um einen Blinkeffekt für Schaltflächen zu implementieren, die auf in Bearbeitung befindliche Tabellen hinweisen, können Sie ein Timer-Objekt verwenden. Der Timer löst in regelmäßigen Abständen ein ActionEvent aus und im Event-Handler können Sie die Farbe der Schaltfläche ändern, um einen Blinkeffekt zu erzeugen.
Das obige ist der detaillierte Inhalt vonWie ändere ich die Schaltflächenfarben in Java Swing basierend auf dem Datenbankstatus dynamisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!