Colori del tasto swing Java

Sto usando NET Beans IDE per sviluppare la mia applicazione in LINUX. Ho usato il pacchetto synthetica per generare un nuovo aspetto. Tutto va bene fino ad ora.

Ora il mio prossimo passo è quello di aggiungere colors ai pulsanti quando cambia lo stato di un database.

Per esempio:

In un ristorante ho 2 tavoli e quando 8 persone sono venute a cenare e creerò 2 tavoli nel mio software poiché le persone sono incustodite voglio che i pulsanti di quei 2 tavoli siano verdi. Quando l’ordine viene elaborato per una di queste tabelle, il colore del pulsante della tabella elaborata deve essere modificato in arancione. Quando è in elaborazione, dovrebbe essere di colore lampeggiante. Come fare questo in Java? Mi occuperò dell’aggiornamento del database voglio solo sapere come cambiare i colors dei pulsanti e aggiungere la tecnica del flashing.

Ecco una domanda e diverse risposte relative al flashing di un componente.

Addendum: puoi saperne di più nell’articolo Come usare i pulsanti . In particolare, puoi usare setForeground() per cambiare il colore del testo di un pulsante, ma il setBackground() corrispondente setBackground() non legge bene su alcune piattaforms. L’utilizzo di un Border è un’alternativa; un pannello colorato, mostrato sotto, è un altro.

inserisci la descrizione dell'immagine qui

 package overflow; 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 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(); } }); } }