import java.awt.event.*;

import javax.swing.*;


/**
 * @author Remi Forax
 *
 */
public class DynAddPanel {

  static int count=0;

  public static void main(String[] args) {
    
    final JPanel panel=new JPanel();
    
    JButton newButton=new JButton("New");
    final JButton resetButton=new JButton("Reset");
    
    newButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        
        final JButton button=new JButton("button "+(count++));
        ActionListener listener=new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            panel.remove(button);
            panel.validate();
            
            panel.repaint(); // workaround FlowLayout bug
          }
        };
        button.addActionListener(listener);
        resetButton.addActionListener(listener);
        
        panel.add(button);
        panel.validate();
      }
    });
    
    panel.add(newButton);
    panel.add(resetButton);
    
    JFrame frame=new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setContentPane(panel);
    frame.setSize(300,200); // on peut utiliser pack à la place
    frame.show();
  }
}
