Salve a tutti,
ho scritto questo piccolo esempio:
Quando clicco su un bottone il pannello non cambia il colore di sfondo come io vorrei che facesse.Dove sbaglio?SAluti.codice://Questo esempio dimostra come sia possibile non usare le classi interne per gestire gli eventi. import java.awt.*; import java.awt.event.*; import javax.swing.*; class ColorPanelFrame_2{ public static void main(String[] args){ ButtonFrame frame=new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class ButtonFrame extends JFrame{ public ButtonFrame(){ setTitle("Color Test"); setSize(Def_W,Def_H); ButtonPanel bp=new ButtonPanel(); add(bp); } private static final int Def_W=400; private static final int Def_H=300; } class ButtonPanel extends JPanel implements ActionListener{ public ButtonPanel(){ //creo i pulsanti JButton yButton=new JButton("Yellow"); JButton rButton=new JButton("Red"); JButton bButton=new JButton("Blue"); //aggiungo i pulsanti al Panello add(yButton); add(rButton); add(bButton); //aggiungo l'oggetto listener alla sorgente dell'evento yButton.addActionListener(this); rButton.addActionListener(this); bButton.addActionListener(this); } //Listner di azioni che imposta il colore di sfondo del Pannel public void actionPerformed(ActionEvent e){ JButton o=(JButton)e.getSource(); if( o==yButton ){ System.out.println("Yellow button"); setBackground(Color.YELLOW); } else{ if( o==bButton ){ System.out.println("Blue button"); setBackground(Color.BLUE); } else{ if( o==rButton ){ System.out.println("Red button"); setBackground(Color.RED); } } } } private JButton yButton; private JButton rButton; private JButton bButton; }
P.S.so che è possibile usare una classe interna.questo è solo un esercizio per rendermi conto.

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando