2015-06-03 70 views
0

我有一組迴路中產生的按鈕,此代碼如何識別一組循環生成的按鈕中的一個按鈕?

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); 
      } 
     }); 
    } 

這裏的問題是,我不能使用的setText()來比較晚的原因有沒有屬性來隱藏文本製作。我以後如何比較它?

PS。每個按鈕都有一個連續的號碼,很容易分配該號碼。真正的問題在於放在哪裏。

回答

4

你可以開始:

  • 使用Action API,它可以讓你觸發相關按鈕的selected狀態。這使您可以將按鈕從應該採取的底層「操作」中解除耦合。看看How to Use ActionsHow to Use Actions瞭解更多詳情
  • 使用JButtonactionCommand財產。這可以讓你有某種與按鈕相關的「標識符」的獨立於文字
  • 使用數組或List來維持到按鈕的引用
+0

我決定使用第二個選項,即是我正在尋找的,但我無法保存連續的數字。它始終是「1 - 0」(1是正確的,0不是,每個按鈕應該有它自己的編號)。任何想法? –

+0

從循環中使用「我」? – MadProgrammer

+0

'for(int i = 0; i <= 19; i ++){0}最終JToggleButton b = new JToggleButton(new ImageIcon(「/ images/available.png」)); (b); b.setActionCommand(String.valueOf(1 + i)); b.setIcon(new javax.swing.ImageIcon(getClass()。getResource(「/ Images/available1.png」))); b'addActionListener(new ActionListener(){' 它不需要它,總是0 –

2

您可以保留List<JToggleButton>JToggleButton並稍後獲取元素index。除此之外,而不是在循環添加ActionListener可以實現ActionListener可用於所有的按鈕,你只需要編寫環路b.addActionListener(this);

:最好從i = 0而不是1