Salve,
sto imparando l'interfaccia grafica e la gestione degli eventi.Prendendo spunto da un esempio sul libro ho provato a programmare un frame con tre bottoni ognuno dei quali all'atto del click dovrebbe visualizzare una stringa a secondo del bottone cliccato ma ciò non accade o meglio accade nel modo sbagliato.

codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ButtonTest{
	public static void main(String[] args){
		ButtonFrame frame = new ButtonFrame();
		//frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

class ButtonFrame extends JFrame{
	public ButtonFrame(){
		setTitle("Button Test"); 
		setSize(DEF_W,DEF_H);
		setVisible(true);

		//aggiungi panello al frame
		ButtonPanel panel = new ButtonPanel();
		//Container contentPane = getContentPane();
		//contentPane.
		add(panel);
		WindowListener term = new Terminator();
	        
		this.addWindowListener(term);

	}
	private class Terminator extends WindowAdapter{
		public void windowClosing(WindowEvent event){
			System.out.println("Chiudo programma");
			System.exit(0);
		}
	}

	public static final int DEF_W = 300;
	public static final int DEF_H = 200;
}
/** 
  Panello con tre pulsanti 
 **/
class ButtonPanel extends JPanel{
	public ButtonPanel(){
		//crea pulsanti
		makeButton("Yellow","YELLOW BUTTON");
		makeButton("Red","RED BUTTON");
		makeButton("Blue","BLUE BUTTON");
	}
	public void makeButton(String name,final String string){
		JButton button = new JButton(name);
		add(button);
		button.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent event){
				JLabel label=new JLabel(string);
				label.setLocation(75,100);
				add(label);
				System.out.println("sono qui");
				}
				});
	}

}
Compilato ed eseguito le stringhe sono visibile solo se ridimensiono il frame dopo aver cliccato sul bottone.Dove sbaglio?Saluti.