Duvida sobre actionPerformed Java

Boa tarde, estou enroscado a algum tempo nessa parte:
Tenho primeiro um ActionPerformed no jbAdicionar que vai adicionando botão qnd o cliente querer.
No proximo tenho outro ActionPerformed no jbMenos que seria para deletar esses botoes criados, porem, se eu adiciono 3 botoes ele só “exclui” o primeiro. (na vdd coloquei um setVisible para testar). Queria saber como que faço para continuar “excluindo” se o cliente quiser.

int i = 21;
JButton jbMesa;
String jlComanda;
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbAdicionar){
jlComanda = new String ("COMANDA " + Integer.toString(i));
jbMesa = new JButton(jlComanda, iMesa) ;
jbMesa.setBorder(null);
jbMesa.setContentAreaFilled(false);
jbMesa.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
jbMesa.setOpaque(false);
jbMesa.setVerticalTextPosition(SwingConstants.BOTTOM);
jbMesa.setHorizontalTextPosition(SwingConstants.CENTER);
jpCentro.add(jbMesa);

        jbMesa.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            TelaComandaMesaNova mesanova = new TelaComandaMesaNova();
            jdp.add(mesanova);
            jdp.moveToFront(mesanova);
            jdp.setSelectedFrame(mesanova);
        }
    });            
        i++;
} 

    if (e.getSource() == jbMenos){
        jbMesa.setVisible(false);            
    }

Desde já agradeço!

Você está usando a referencia do ultimo botão criado:

if (e.getSource() == jbMenos){
        jbMesa.setVisible(false);            
    }

Por isso que ele só some o primeiro (ou o ultimo), você deve controlar a ordem dos botões, assim toda vez que clicar no “Menos” ele vai removendo como se fosse uma pilha (ou fila dependendo como queira)

Obrigado Renan, sera que tenho q usar algum Array ou algo do gênero para fazer o controle?

Sim, você deve usar um array e controlar o indice, quando clica no “Menos” você decrementa o indice.

ainda nao estou coseguindo…

JButton[]botoes = new JButton[4]; //CRIEI UM VETOR

int i = 0;
    public void actionPerformed(ActionEvent e) {
            if (e.getSource() == jbAdicionar){
               botoes[i] = new JButton();
               jpCentro.add(botoes[i]);   
        } if (e.getSource() == jbMenos){
            for (i=0; i < botoes.length; i--){
            botoes[i].setVisible(false);            
            JOptionPane.showMessageDialog(null, "removido");
            }
        } 
}

Mesmo assim ele só paga um elemento, me desculpe estou tentando buscar soluções, porem, sou meio leigo ainda :s

Você deve decrementar e usar o indice, mas sem ser no for

(e.getSource() == jbMenos){
//            for (i=0; i < botoes.length; i--){
            botoes[i].setVisible(false);            
            JOptionPane.showMessageDialog(null, "removido");
            i-=1; //isso que deve fazer, deve tratar se não é meenor que 0 também
 //           }
        }

muito obrigado, consegui da seguinte forma:
identar texto pre-formatado em 4 espaços
int i = 21;
String jlComanda;

@Override
public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == jbAdicionar){
          jlComanda = new String ("COMANDA  " + Integer.toString(i));
          botoes[i] = new JButton(jlComanda);
          addBotao(jpCentro, botoes[i]); 
          jbMenos.setEnabled(true);
          JOptionPane.showMessageDialog(null, "ADD" + i);
          i++;
    }
        if (e.getSource() == jbMenos){
              i--;
              botoes[i].setVisible(false);
              JOptionPane.showMessageDialog(null, "REMOVE" + i);
              if (i<=21){
                  jbMenos.setEnabled(false);
              }                  
            }