Ciao,
dovrei fare un programma CambiaColore che mi crei una finestra con all'interno un bottone. La finestra inizialmente ha sfondo rosso, se schiaccio il tasto dovrebbe passare a bianco e se lo schiaccio nuovamente, lo sfondo dovrebbe diventare nuovamente blu in loop.
Non so dove sbaglio ma se premo il bottone non accade nulla pur non dandomi errori. Suppongo possa avere a che fare con l'actionEvent ma di base quando viene creata la finestra lo sfondo iniziale non è di colore rosso come io l'avevo impostato ma è bianca/grigia.
Altra cosa: c'è un modo migliore (sicuramente si) per gestire l'actionEvent della premuta di un singolo tasto? Perché per il momento ho adattato un classico caso di scelta tra due bottoni...
Grazie!
Ecco il codice:
codice:package interfacceutentegrafiche; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class CambiaColore extends JFrame implements ActionListener { public static final int LARGHEZZA = 300; public static final int ALTEZZA = 200; public CambiaColore(){ super(); setSize(LARGHEZZA, ALTEZZA); addWindowListener(new DistruttoreFinestra()); setTitle("Finestra cambia colori"); setLayout(new BorderLayout()); Container pannello = getContentPane(); pannello.setBackground(Color.RED); JButton pulsanteCambia = new JButton("Cambia!"); pulsanteCambia.addActionListener(this); add(pulsanteCambia,"Center"); } public void actionPerformed(ActionEvent e){ Container pannello = getContentPane(); if(e.getActionCommand().equals("Cambia!")){ if(pannello.getBackground().equals(Color.RED)){ pannello.setBackground(Color.WHITE); } else if (pannello.getBackground() == Color.WHITE) { pannello.setBackground(Color.BLUE); } else { pannello.setBackground(Color.RED); } } } public static void main(String[] args) { // TODO Auto-generated method stub CambiaColore finestracambia = new CambiaColore(); finestracambia.setVisible(true); } }