Ajuda Vetor de Botões

Alguem posta um exemplo de codigo usando vetor de botoes,onde seja possivel fazer uma interface parecida com essa:

Essa interface possui inumeros botoes que representam apartamentos onde ficam dentro de um scroll.

Você vai fazer isso programáticamente:
http://download.oracle.com/javase/tutorial/uiswing/components/button.html

eu ja tenho noção no java,mas queria um exemplo onde tenha vetor de botoes.

Dê uma olhada na classe GridLayout.

obrigado,viniGody.
Mas tenho uma duvida,quando executo a interface os botoes ficam tipo invisiveis ,mas na hora q passo mouse em cima eles aparecem.

estou usando Grid Layout dessa forma:

 Vector<String> dados = new Vector<String>();
public JButton btn;  
JScrollPane scroll;
JPanel pBotoes;
   con.conecta();
        con.executeSQL("Select * from Apartamento");
        try{
           while(con.resultset.next()){
               dados.add(con.resultset.getString("APARTAMENTO"));
           }
        }catch(SQLException errro){
            System.out.println(errro);
        }
          
         // painel com os comandos  
   

      
     pBotoes = new JPanel(new GridLayout(4,4));  
   
    
    for(int e=0;e<dados.size();e++){
  add_botao(e,dados.get(e));
    }
      
    // painel do JFrame  
    this.setLayout(new BorderLayout());  
     scroll=new JScrollPane();
     scroll.setSize(100,50);
    this.getContentPane().add(scroll.add(pBotoes), BorderLayout.NORTH);  
      
      
public void add_botao(int e,String apart){
    btn=new JButton(apart);
  try{ 
      con.executeSQL("Select * from Apartamento where Apartamento='"+apart+"'");
   con.resultset.first();
   String status=con.resultset.getString("STATUS");
   System.out.println(apart+":"+status);
           }catch(SQLException error){
           }
  
  btn.setVisible(true);
  String url="";
  if(status.equals(("Livre"))){
      url="/livre.png";
  }
  if(status.equals(("Reservado"))){
      url="/reservado.png";
  }
  if(status.equals(("Ocupado"))){
      url="/ocupado.png";
  }
btn.setIcon(new ImageIcon(url));
  pBotoes.add(btn);  
//btn.setSelected(true);
          
           
 }

Certifique-se que o método setVisible não é chamado no construtor, o ideal é que ele fique fora, ou na última linha do construtor.

Se os botões são adicionados com o form já aberto, chame o método validate() do painel toda vez que modifica-lo.

Vini Resolvi os problemas acima,mas agora surgiu uma certa necessidade,como eu poderia limpar todos os botoes dentro do form e executar o metodo novamente assim nando um refresh nos apartamentos?

 public void cria_botao(int e,String apart){
  //  btn=new JButton(apart);
     button[e]=new JButton(apart);
  try{ 
      con.executeSQL("Select * from Apartamento where Apartamento='"+apart+"'");
   con.resultset.first();
   String status=con.resultset.getString("STATUS");
   System.out.println(apart+":"+status);
           
  
  button[e].setVisible(true);
  String url="";
  if(status.equals(("Livre"))){
      url="/mastermotel/livre.png";
  }
  if(status.equals(("Reservado"))){
      url="/mastermotel/reservado.png";
  }
  if(status.equals(("Ocupado"))){
      url="/mastermotel/ocupado.png";
  }
button[e].setIcon(new javax.swing.ImageIcon(getClass().getResource(url)));
button[e].setPreferredSize(new Dimension(20,20));
button[e].setFont(new Font("Arial",Font.BOLD,11));
  pBotoes.add(button[e]);  
  button[e].setHorizontalTextPosition(SwingConstants.CENTER);
  button[e].setVerticalTextPosition(SwingConstants.BOTTOM);
  }catch(SQLException error){
           }
//btn.setSelected(true);
            
           
 }
 public void inseri_botao(){
      con.conecta();
        con.executeSQL("Select * from Apartamento");
        try{
           while(con.resultset.next()){
               dados.add(con.resultset.getString("APARTAMENTO"));
           }
        }catch(SQLException errro){
            System.out.println(errro);
        }
          
         // painel com os comandos  
   

     pBotoes = new JPanel(new GridLayout( dados.size()/5,5));  
   
    button=new JButton[20];
   this.setLayout(new BorderLayout());  
    pBotoes.setSize(880,230);
    jScrollPane1.setSize(new Dimension(920,707));
    jPanel2.add(pBotoes, BorderLayout.PAGE_START);     
    
    for(int e=0;e<dados.size();e++){
  cria_botao(e,dados.get(e));
  final Integer bt=e;
   button[e].addActionListener(  
    new ActionListener() {  
        public void actionPerformed( ActionEvent ae ) {  
         try{ 
      con.executeSQL("Select * from Apartamento where Apartamento='"+button[bt].getText()+"'");
   con.resultset.first();
  codapto=con.resultset.getString("CODAPTO");
  statusapto=con.resultset.getString("STATUS");
   System.out.println("ActionPerfomed:"+codapto+":"+button[bt].getText()+"\nButton:"+bt+"\nButtonCount:"+dados.size());
         }catch(SQLException error){
             
         }
        }  
    }  
);
   
   button[e].setFocusable(true);
    }
  
 
      
 
 }

Chame removeAll no seu JPanel:
http://download.oracle.com/javase/6/docs/api/java/awt/Container.html#removeAll()