ActionListener只使用一个按钮

时间:2014-11-23 18:29:41

标签: java swing user-interface jbutton actionlistener

我有一个面板,其中有两个面板。问题是ActionListener仅使用第一个面板中的第一个按钮,但第二个面板中的按钮不起作用。我做错了什么?

package vista;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import logica.Empresa;

public class PanelPagos extends JPanel implements ActionListener {

private JPanel panelBusqueda;
private JPanel panelCuotas;

///////////////////////////////////
private JLabel labelId;
private JTextField txtId;
private JButton buttonBuscar;

//////////////////////////////////

private JLabel labelPago1;
private JLabel labelPago2;
private JLabel labelPago3;
private JLabel labelPago4;
private JLabel labelPago5;
private JLabel labelPago6;
private JLabel labelPago7;
private JLabel labelPago8;
private JLabel labelPago9;
private JLabel labelPago10;
private JLabel labelPago11;
private JLabel labelPago12;

private JButton btnPago1;
private JButton btnPago2;
private JButton btnPago3;
private JButton btnPago4;
private JButton btnPago5;
private JButton btnPago6;
private JButton btnPago7;
private JButton btnPago8;   
private JButton btnPago9;
private JButton btnPago10;
private JButton btnPago11;
private JButton btnPago12;

private JLabel labelPagoCompleto;

public PanelPagos() {

    panelBusqueda = new JPanel();
    panelCuotas = new JPanel();

    labelId = new JLabel("ID:");
    txtId = new JTextField(10);
    buttonBuscar = new JButton("Buscar");
    buttonBuscar.addActionListener(this);

    panelBusqueda.add(labelId);
    panelBusqueda.add(txtId);
    panelBusqueda.add(buttonBuscar);

    ///////////////////////////////

    labelPago1 = new JLabel("Pago #1: ");
    labelPago1.setEnabled(false);
    labelPago2 = new JLabel("Pago #2: ");
    labelPago2.setEnabled(false);
    labelPago3 = new JLabel("Pago #3: ");
    labelPago3.setEnabled(false);
    labelPago4 = new JLabel("Pago #4: ");
    labelPago4.setEnabled(false);
    labelPago5 = new JLabel("Pago #5: ");
    labelPago5.setEnabled(false);
    labelPago6 = new JLabel("Pago #6: ");
    labelPago6.setEnabled(false);
    labelPago7 = new JLabel("Pago #7: ");
    labelPago7.setEnabled(false);
    labelPago8 = new JLabel("Pago #8: ");
    labelPago8.setEnabled(false);
    labelPago9 = new JLabel("Pago #9: ");
    labelPago9.setEnabled(false);
    labelPago10 = new JLabel("Pago #10: ");
    labelPago10.setEnabled(false);
    labelPago11 = new JLabel("Pago #11: ");
    labelPago11.setEnabled(false);
    labelPago12 = new JLabel("Pago #12: ");
    labelPago12.setEnabled(false);

    btnPago1 = new JButton("Pagar");
    btnPago1.addActionListener(this);
    btnPago1.setEnabled(false);
    btnPago2 = new JButton("Pagar");
    btnPago2.addActionListener(this);
    btnPago2.setEnabled(false);
    btnPago3 = new JButton("Pagar");
    btnPago3.addActionListener(this);
    btnPago3.setEnabled(false);
    btnPago4 = new JButton("Pagar");
    btnPago4.addActionListener(this);
    btnPago4.setEnabled(false);
    btnPago5 = new JButton("Pagar");
    btnPago5.addActionListener(this);
    btnPago5.setEnabled(false);
    btnPago6 = new JButton("Pagar");
    btnPago6.addActionListener(this);
    btnPago6.setEnabled(false);
    btnPago7 = new JButton("Pagar");
    btnPago7.addActionListener(this);
    btnPago7.setEnabled(false);
    btnPago8 = new JButton("Pagar");
    btnPago8.addActionListener(this);
    btnPago8.setEnabled(false);
    btnPago9 = new JButton("Pagar");
    btnPago9.addActionListener(this);
    btnPago9.setEnabled(false);
    btnPago10 = new JButton("Pagar");
    btnPago10.addActionListener(this);
    btnPago10.setEnabled(false);
    btnPago11 = new JButton("Pagar");
    btnPago11.addActionListener(this);
    btnPago11.setEnabled(false);
    btnPago12 = new JButton("Pagar");
    btnPago12.addActionListener(this);
    btnPago12.setEnabled(false);

    panelCuotas.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    panelCuotas.add(labelPago1, gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    panelCuotas.add(btnPago1, gbc);

    gbc.gridx = 0;
    gbc.gridy = 1;
    panelCuotas.add(labelPago2, gbc);

    gbc.gridx = 1;
    gbc.gridy = 1;
    panelCuotas.add(btnPago2, gbc);

    gbc.gridx = 0;
    gbc.gridy = 2;
    panelCuotas.add(labelPago3, gbc);

    gbc.gridx = 1;
    gbc.gridy = 2;
    panelCuotas.add(btnPago3, gbc);

    gbc.gridx = 0;
    gbc.gridy = 3;
    panelCuotas.add(labelPago4, gbc);

    gbc.gridx = 1;
    gbc.gridy = 3;
    panelCuotas.add(btnPago4, gbc);

    gbc.gridx = 0;
    gbc.gridy = 4;
    panelCuotas.add(labelPago5, gbc);

    gbc.gridx = 1;
    gbc.gridy = 4;
    panelCuotas.add(btnPago5, gbc);

    gbc.gridx = 0;
    gbc.gridy = 5;
    panelCuotas.add(labelPago6, gbc);

    gbc.gridx = 1;
    gbc.gridy = 5;
    panelCuotas.add(btnPago6, gbc);

    /////////////////////////////////

    this.add(panelBusqueda);
    this.add(panelCuotas);


}

public String getTxtId() {
    return txtId.getText();
}


public void setTxtId(String txtId) {
    this.txtId.setText(txtId);
}


@Override
public void actionPerformed(ActionEvent evento) {
    Empresa e = Empresa.getInstance();

    if  (evento.getSource() == buttonBuscar){
        System.out.println("Oprimiste Buscar");
        if (e.buscarCliente(getTxtId())==true) {                    

            if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==0) {
                btnPago1.setEnabled(true);
                btnPago2.setEnabled(false);
                btnPago3.setEnabled(false);
                btnPago4.setEnabled(false);
                btnPago5.setEnabled(false);
                btnPago6.setEnabled(false);
                btnPago7.setEnabled(false);
                btnPago8.setEnabled(false);
                btnPago9.setEnabled(false);
                btnPago10.setEnabled(false);
                btnPago11.setEnabled(false);
                btnPago12.setEnabled(false);                    
            }

            if (evento.getSource()==btnPago1) {
                System.out.println("dddddd");
                System.out.println(e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas());
                System.out.println("boton 1");
                System.out.println(e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas());
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(1);                      
            }               

        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==1) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(true);
            btnPago3.setEnabled(false);
            btnPago4.setEnabled(false);
            btnPago5.setEnabled(false);
            btnPago6.setEnabled(false);
            btnPago7.setEnabled(false);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago2) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(2);                      
            }
        } else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==2) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(true);
            btnPago4.setEnabled(false);
            btnPago5.setEnabled(false);
            btnPago6.setEnabled(false);
            btnPago7.setEnabled(false);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago3) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(3);                      
            } 
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==3) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago5.setEnabled(false);
            btnPago6.setEnabled(false);
            btnPago7.setEnabled(false);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago4) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(4);
            } 
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==4) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(false);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(true);
            btnPago6.setEnabled(false);
            btnPago7.setEnabled(false);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago5) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(5);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==5) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(true);
            btnPago7.setEnabled(false);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago6) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(6);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==6) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(false);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false); 
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(true);
            btnPago8.setEnabled(false);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago7) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(7);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==7) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(true);
            btnPago9.setEnabled(false);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago8) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(8);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==8) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(false);
            btnPago8.setToolTipText("Cuota ya paga");
            btnPago9.setEnabled(true);
            btnPago10.setEnabled(false);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago9) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(9);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==9) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(false);
            btnPago8.setToolTipText("Cuota ya paga");
            btnPago9.setEnabled(false);
            btnPago9.setToolTipText("Cuota ya paga");
            btnPago10.setEnabled(true);
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago10) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(10);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==10) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(false);
            btnPago8.setToolTipText("Cuota ya paga");
            btnPago9.setEnabled(false);
            btnPago9.setToolTipText("Cuota ya paga");
            btnPago10.setEnabled(false);
            btnPago10.setToolTipText("Cuota ya paga");
            btnPago11.setEnabled(false);
            btnPago12.setEnabled(false);
            if (evento.getSource()==btnPago11) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(11);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==11) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(false);
            btnPago8.setToolTipText("Cuota ya paga");
            btnPago9.setEnabled(false);
            btnPago9.setToolTipText("Cuota ya paga");
            btnPago10.setEnabled(false);
            btnPago10.setToolTipText("Cuota ya paga");
            btnPago11.setEnabled(false);
            btnPago11.setToolTipText("Cuota ya paga");
            btnPago12.setEnabled(true);
            if (evento.getSource()==btnPago12) {
                e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().setCuotasPagas(12);
            }
        }else if (e.mostrarLista().get(e.calcularPosicion(getTxtId())).getPagos().getCuotasPagas()==12) {
            btnPago1.setEnabled(false);
            btnPago1.setToolTipText("Cuota ya paga");
            btnPago2.setEnabled(false);
            btnPago2.setToolTipText("Cuota ya paga");
            btnPago3.setEnabled(false);
            btnPago3.setToolTipText("Cuota ya paga");
            btnPago4.setEnabled(true);
            btnPago4.setToolTipText("Cuota ya paga");
            btnPago5.setEnabled(false);
            btnPago5.setToolTipText("Cuota ya paga");
            btnPago6.setEnabled(false);
            btnPago6.setToolTipText("Cuota ya paga");
            btnPago7.setEnabled(false);
            btnPago7.setToolTipText("Cuota ya paga");
            btnPago8.setEnabled(false);
            btnPago8.setToolTipText("Cuota ya paga");
            btnPago9.setEnabled(false);
            btnPago9.setToolTipText("Cuota ya paga");
            btnPago10.setEnabled(false);
            btnPago10.setToolTipText("Cuota ya paga");
            btnPago11.setEnabled(false);
            btnPago11.setToolTipText("Cuota ya paga");
            btnPago12.setEnabled(false);
            btnPago12.setToolTipText("Cuota ya paga");
            if (btnPago1.isEnabled()==false && btnPago2.isEnabled()==false && btnPago3.isEnabled()==false && btnPago4.isEnabled()==false && 
                    btnPago5.isEnabled()==false && btnPago6.isEnabled()==false && btnPago7.isEnabled()==false && btnPago8.isEnabled()==false && 
                    btnPago9.isEnabled()==false && btnPago10.isEnabled()==false && btnPago11.isEnabled()==false && btnPago12.isEnabled()==false) {
                labelPagoCompleto = new JLabel("TODAS LAS CUOTAS ESTAN PAGAS. DIRIGETE AL CENTRO PARA MANTENER, MODIFICAR O ELIMINAR TU MEMBRESIA");
                this.add(labelPagoCompleto);
            }               

        }

    }   
}
}

2 个答案:

答案 0 :(得分:1)

如果eventSource是buttonBuscar

,那么将执行整个actionPerfomed逻辑
if (evento.getSource() == buttonBuscar) {

删除此行,您的代码应该开始适用于所有按钮。另外,请阅读SSCCE

的链接

答案 1 :(得分:1)

建议:

  • 不要为一切使用一个ActionListener。
  • 而是为每个子类型的操作使用一个ActionListener或AbstractAction。
  • 您的程序有两个主要的不同操作:
    1. 按Buscar按钮 - 所以给它自己的ActionListener或AbstractAction
    2. 按下单个Pagos按钮 - 所以给它们自己的ActionListener或AbstractAction与Buscar按钮不同。
  • 同样,您可以极大地通过使用集合来简化代码。这将减少冗余,并简化编码,调试和增强。
  • 避免使用GUI的实现侦听器接口,因为这限制了每种类型的侦听器使用一个侦听器方法,并且给GUI带来了太多的直接责任。
  • 最好使用匿名内部侦听器,私有内部类侦听器,或单独的独立类侦听器。
  • 考虑创建一个类来保存单个JLabel和JButton,并创建这些类的集合。这样可以更轻松地同时启用或禁用按钮和标签。
  • 考虑使用JCombBox或JSpinner而不是JTextField。这会将用户的选择限制在仅允许的范围内,从而减少可能的错误。

例如,您可以创建一个类,我在这里称为ButtonLabel,它允许您组合JLabel和JButton,这很简单,

/**
 * class ButtonLabel </p>
 * Description: 
 * Putting a JButton and JLabel together will
 * make it easier to enable and disable both at the same time
 */
class ButtonLabel {
   private int index;
   private JLabel label;
   private JButton button;

   public ButtonLabel(int index, JLabel label, JButton button, boolean enabled) {
      this.index = index;
      this.label = label;
      this.button = button;
      label.setEnabled(enabled);
      button.setEnabled(enabled);
   }

   public int getIndex() {
      return index;
   }

   public JLabel getLabel() {
      return label;
   }

   public JButton getButton() {
      return button;
   }

   public void setEnabled(boolean enabled) {
      label.setEnabled(enabled);
      button.setEnabled(enabled);
   }

   public boolean isEnabled() {
      return button.isEnabled();
   }
}

然后主GUI可以包含这些的集合,可能是数组或ArrayList或HashMap,这些都取决于您想要如何访问按钮。


你的Pagar按钮可以有自己的Action / ActionListener,类似于:

private class ButtonLabelAction extends AbstractAction {
  private int index;

  public ButtonLabelAction(String name, int index) {
     super(name);
     this.index = index;
  }

  @Override
  public void actionPerformed(ActionEvent e) {
     // TODO: code for each pagar button's action
     JOptionPane.showMessageDialog(PanelPagos2.this,
           "You've pressed Pagos button #" + index);
  }
}

这可能有特定于Pagar按钮需要的代码。


Buscar按钮可以有自己的Action / ActionListener,例如

private class BuscarAction extends AbstractAction {

  public BuscarAction(String name) {
     super(name);
     int mnemonic = (int) name.charAt(0);
     putValue(MNEMONIC_KEY, mnemonic);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
     // assuming use of a JComboBox called pagoCombo
     String selection = (String) pagoCombo.getSelectedItem();

     // assuming use of a HashMap called btnLabelMap that
     // holds ButtonLabel values matched to a String key.
     for (ButtonLabel btnLabel : btnLabelMap.values()) {
        btnLabel.setEnabled(false);
     }
     if (selection != null && !selection.trim().isEmpty()) {
        btnLabelMap.get(selection).setEnabled(true);
     }
  }
}

例如,

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;

@SuppressWarnings("serial")
public class PanelPagos2 extends JPanel {
   public static final int PAGO_CUENTA = 12;
   private Map<String, ButtonLabel> btnLabelMap = new HashMap<String, ButtonLabel>();
   private DefaultComboBoxModel<String> pagoComboModel = new DefaultComboBoxModel<>();
   private JComboBox<String> pagoCombo = new JComboBox<String>(pagoComboModel);

   public PanelPagos2() {
      JPanel mainPanel = new JPanel();
      JPanel scrolledPanel = new JPanel();
      JScrollPane scrollPane = new JScrollPane(scrolledPanel);
      scrollPane
            .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
      scrolledPanel.setLayout(new GridBagLayout());
      pagoComboModel.addElement("");
      for (int i = 0; i < PAGO_CUENTA; i++) {
         int index = i + 1;
         String indexText = String.valueOf(index);
         pagoComboModel.addElement(indexText);
         String labelText = String.format("Pago #%02d:", index);
         JLabel label = new JLabel(labelText);
         ButtonLabelAction buttonLabelAction = new ButtonLabelAction("Pagar", index);
         JButton button = new JButton(buttonLabelAction);
         ButtonLabel btnLabel = new ButtonLabel(index, label, button, false);
         btnLabelMap.put(indexText, btnLabel);
         scrolledPanel.add(label, createGbc(0, i));
         scrolledPanel.add(button, createGbc(1, i));
      }

      JViewport viewport = scrollPane.getViewport();
      int psWidth = viewport.getPreferredSize().width;
      int psHeight = viewport.getPreferredSize().height / 2;
      Dimension prefSize = new Dimension(psWidth, psHeight);
      viewport.setPreferredSize(prefSize);

      mainPanel.add(new JLabel("ID:"));
      mainPanel.add(pagoCombo);
      mainPanel.add(new JButton(new BuscarAction("Buscar")));

      add(mainPanel);
      add(scrollPane);
   }

   private static GridBagConstraints createGbc(int x, int y) {
      GridBagConstraints gbc = new GridBagConstraints();
      gbc.gridx = x;
      gbc.gridy = y;
      gbc.gridwidth = 1;
      gbc.gridheight = 1;
      gbc.weightx = 1.0;
      gbc.weighty = 1.0;
      gbc.anchor = x == 0 ? GridBagConstraints.WEST : GridBagConstraints.EAST;
      gbc.fill = x == 0 ? GridBagConstraints.BOTH
            : GridBagConstraints.HORIZONTAL;
      int right = x == 0 ? 3 : 0;
      int left = right;
      gbc.insets = new Insets(0, left, 0, right);
      return gbc;
   }

   private class BuscarAction extends AbstractAction {

      public BuscarAction(String name) {
         super(name);
         int mnemonic = (int) name.charAt(0);
         putValue(MNEMONIC_KEY, mnemonic);
      }

      @Override
      public void actionPerformed(ActionEvent e) {
         String selection = (String) pagoCombo.getSelectedItem();
         for (ButtonLabel btnLabel : btnLabelMap.values()) {
            btnLabel.setEnabled(false);
         }
         if (selection != null && !selection.trim().isEmpty()) {
            btnLabelMap.get(selection).setEnabled(true);
         }
      }
   }

   private class ButtonLabelAction extends AbstractAction {
      private int index;

      public ButtonLabelAction(String name, int index) {
         super(name);
         this.index = index;
      }

      @Override
      public void actionPerformed(ActionEvent e) {
         // TODO: code for each pagar button's action
         JOptionPane.showMessageDialog(PanelPagos2.this,
               "You've pressed Pagos button #" + index);
      }
   }

   private static void createAndShowGui() {
      PanelPagos2 mainPanel = new PanelPagos2();

      JFrame frame = new JFrame("PanelPagos2");
      frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

/**
 * class ButtonLabel </p>
 * Description: 
 * Putting a JButton and JLabel together will
 * make it easier to enable and disable both at the same time
 */
class ButtonLabel {
   private int index;
   private JLabel label;
   private JButton button;

   public ButtonLabel(int index, JLabel label, JButton button, boolean enabled) {
      this.index = index;
      this.label = label;
      this.button = button;
      label.setEnabled(enabled);
      button.setEnabled(enabled);
   }

   public int getIndex() {
      return index;
   }

   public JLabel getLabel() {
      return label;
   }

   public JButton getButton() {
      return button;
   }

   public void setEnabled(boolean enabled) {
      label.setEnabled(enabled);
      button.setEnabled(enabled);
   }

   public boolean isEnabled() {
      return button.isEnabled();
   }
}