Salve a tutti,
ho scritto questo piccolo esempio:

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;
}
Quando clicco su un bottone il pannello non cambia il colore di sfondo come io vorrei che facesse.Dove sbaglio?SAluti.

P.S.so che è possibile usare una classe interna.questo è solo un esercizio per rendermi conto.