2010-08-06 9 views
7

sto usando Fagioli NET IDE per sviluppare la mia applicazione in Linux. Ho usato il pacchetto synthetica per generare un nuovo aspetto. Tutto va bene fino ad ora.Java colori dei pulsanti di rotazione

Ora il mio prossimo passo è quello di aggiungere colori ai pulsanti quando alcuni cambiamenti di stato del database.

Ad esempio:

In un ristorante ho 2 tavoli e quando 8 persone è venuto in per cenare e creerò 2 mensa nel mio software dal momento che le persone sono incustoditi voglio i pulsanti a quei 2 tavoli di essere verde. 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 prenderò cura di aggiornamento del database voglio solo sapere come cambiare i colori dei pulsanti e l'aggiunta di tecnica lampeggiare.

risposta

14

Ecco un question and several answers relative a lampeggiare un componente.

Addendum: Potete saperne di più in questo articolo How to Use Buttons. In particolare, è possibile utilizzare setForeground() per modificare il colore del testo di un pulsante, ma il corrispondente setBackground() non viene letto correttamente su alcune piattaforme. L'utilizzo di Border è un'alternativa; un pannello colorato, mostrato sotto, è un altro.

enter image description here

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<ButtonPanel> panels = new ArrayList<ButtonPanel>(); 

    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(); 
      } 
     }); 
    } 
} 
+1

Usando 'setOpaque (vero)' sul pulsante è anche efficace, come mostrato [qui] (http://stackoverflow.com/a/9852024/230513). – trashgod

+0

Non ho mai realizzato che Swing possa essere così bello –

+0

@TimothyLeung: credito a Java 2D e Aqua/Quartz; vedi anche 'Color.getHSBColor()', visto [qui] (http://stackoverflow.com/a/9875534/230513). – trashgod

Problemi correlati