2015-05-07 2 views
0

У меня есть gridLayout JButtons. Я хотел бы отличить каждый JButton друг от друга в функции actionPerformed. Я не хочу «называть» каждого JButton. Пользователь случайно нажимает JButton. Есть ли способ узнать, какая кнопка была нажата? Возможно?gridLayout JButtons, actionListener для каждого JButton

[....] 
    tUsuariCPU = new JButton[mida][mida]; 
    for (int i=0;i<size;i++){ 
     for (int j=0;j<size;j++){ 
      JButton temp = new JButton(); 
      tUsuariCPU[i][j] = temp; 
      temp.addActionListener(this); 
      panel.add(temp); 
     } 
     } 
    } 

    public void actionPerformed(ActionEvent e) {} 
      [....] 

    } 
+0

Вы можете использовать JButton.setName(), чтобы отличать их (предпочтительно), или вы могли бы создать ActionListener для каждой кнопки – ControlAltDel

ответ

0

Если вы хотите использовать один ActionListener, вы можете проверить, какой компонент выстрелил событие с помощью кнопки getSource и сравнения экземпляра в случаях JButton. Ниже использует цикл для цикла по 2D массива JButtons:

public void actionPerformed(ActionEvent e) {} 
    for (int i = 0; i < tUsuariCPU.length; i++){ 
     for (int j = 0; j < tUsuariCPU[i].length; j++){ 
      if (e.getSource() == tUsuariCPU[i][j]){ 
       //do something 
      } 
     } 
    } 
} 

В качестве альтернативы, вы можете добавить один ActionListener на кнопку, или установить ActionCommand в JButton и использовать это значение, чтобы определить, какие JButton уволили событие (e.getActionCommand().equals(myButton.getActionCommand()))

Смежные вопросы