Java 如何在一组循环生成的按钮中识别按钮?

Java 如何在一组循环生成的按钮中识别按钮?,java,arrays,swing,netbeans,jbutton,Java,Arrays,Swing,Netbeans,Jbutton,我有一组用这个代码生成的循环按钮 this.panelCuerpo.setLayout(new GridLayout(4,5)); for(int i = 1; i<=20; i++){ final JToggleButton b = new JToggleButton(new ImageIcon("/images/available.png")); panelCuerpo.add(b); b.setIcon

我有一组用这个代码生成的循环按钮

this.panelCuerpo.setLayout(new GridLayout(4,5));
    for(int i = 1; i<=20; i++){
        final JToggleButton b = new JToggleButton(new ImageIcon("/images/available.png"));            
        panelCuerpo.add(b);

        b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
        b.addActionListener(new ActionListener() {
           @Override
            public void actionPerformed(ActionEvent evt){                    
                if(b.isSelected()){
                    b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/busy1.png")));
                    cantidadBoletas++;                        
                }else{
                    b.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/available1.png")));
                    cantidadBoletas--;
                }
                System.out.println(cantidadBoletas);
            } 
        });
    } 
this.panelCuerpo.setLayout(新的GridLayout(4,5));

对于(int i=1;i您可以维护
JToggleButton
列表
,然后通过
索引
获取元素。除此之外,您可以实现
ActionListener
而不是在循环中添加
ActionListener
,它可以用于所有按钮,您只需要编写
b.addActionListener(此);
在循环中


注意:最好从
i=0
开始,而不是从
1
开始。您可以维护
JToggleButton
列表
,然后通过
索引
获取元素。除了在循环中添加
ActionListener
之外,还可以实现可用于所有按钮的
ActionListener
您只需要在循环中编写
b.addActionListener(this);

注意:最好从
i=0开始,而不是从
1开始,您可以:

  • 使用
    操作
    API,可以触发相关按钮的
    选定
    状态。这允许您将按钮与其应采取的基本“操作”分离。有关详细信息,请参阅
  • 使用
    JButton
    actionCommand
    属性。这允许您拥有与按钮相关联的某种“标识符”,它与文本无关
  • 使用数组或
    列表
    来维护对按钮的引用
    • 您可以:

      • 使用
        操作
        API,可以触发相关按钮的
        选定
        状态。这允许您将按钮与其应采取的基本“操作”分离。有关详细信息,请参阅
      • 使用
        JButton
        actionCommand
        属性。这允许您拥有与按钮相关联的某种“标识符”,它与文本无关
      • 使用数组或
        列表
        来维护对按钮的引用

      我决定使用第二个选项,这是我一直在寻找的,但我无法保存连续的数字。它始终是“1-0”(1是对的,0不是。每个按钮都应该有自己的数字)。有什么想法吗?使用循环中的“I”?
      (int i=0;iMake user您使用的是ActionEvent#getActionCommand,而不是b的引用这是问题所在,我使用的是b引用。“evt”(actionPerformed()中的参数是正确的方式)。我决定使用第二个选项,这是我正在寻找的,但我无法保存连续的数字。它始终是“1-0”(1是对的,0不是。每个按钮都应该有自己的编号)。有什么想法吗?使用循环中的“i”
      for(int i=0;i make user您使用的是ActionEvent#getActionCommand,而不是b的引用问题出在哪里,我使用的是b引用。“evt”(actionPerformed()中的参数是正确的方式)。