2015-05-14 2 views
-1

Как я могу управлять actionListener двух JButtons, нажатых один за другим?JButton ActionEvent ActionListener

У меня есть 2 JPanels. В каждом JPanel я получил матрицу JButtons имени tUsuari и tUsuariCPU

void actionPerformed(ActionEvent){ 
    /****// 
    for (int i=0;i<tUsuari.length;i++){ 
    for (int j=0;j<tUsuari.length;j++){ 
     if (e.getSource()==tUsuari[i][j]){ 
      System.out.println("hello"); 
       for (int r=0;r<tUsuariCPU.length;r++){ 
        for (int s=0;s<tUsuariCPU.length;s++){ 
         if (e.getSource()==tUsuariCPU[r][s]){ 
          System.out.println("bye"); 
          parent.provaAtac(i,j,r,s); 
         } 
        } 
       } 
     } 
    } 
    } 
} 

Когда я нажал JButton из tUsuari он печатает «привет», а затем я нажал JButton из другой панели муравья она не напечатайте «bye».

+0

Событие либо будет «привет», либо «пока», это не может быть одновременно. Если вам нужно изменить состояние кнопки на основе действия предыдущих кнопок, вам необходимо сохранить какой-то флаг на предыдущей кнопке или, может быть, на 'JToggleButton', и проверить состояние кнопок переключения – MadProgrammer

ответ

1

Почему так много вложенных петель? Разделить в 2 части и заполнить панели индивидуально ... также, что делает метод: parent.provaAtac(i,j,r,s);?

for (int i=0;i<tUsuari.length;i++){ 
    for (int j=0;j<tUsuari.length;j++){ 
     if (e.getSource()==tUsuari[i][j]){ 
      System.out.println("hello berlin"); 
     } 
    } 
} 

for (int r=0;r<tUsuariCPU.length;r++){ 
    for (int s=0;s<tUsuariCPU.length;s++){ 
     if (e.getSource()==tUsuariCPU[r][s]){ 
       System.out.println("bye madrid"); 
     } 
    } 
} 
0

Ваша логика неправильная. Если e.getSource() == tUsuari [i] [j], да, вы действительно распечатываете «Hello». Но если это условие истинно, нет никакого способа, чтобы e.getSource() == tUsuariCPU [r] [s] может быть истинным, поскольку e.getSource не может быть одновременно и вашей кнопкой tUsari, и вашей кнопкой tUsuariCPU. И наоборот, если вы нажмете кнопку CPU, вы не проведете первую проверку, если она является кнопкой tUsuari, и поэтому никогда не попадайте на проверку для кнопки CPU. Я предлагаю создать два разных actionListeners, по одному для каждой кнопки, которая делает то, что вы хотите, чтобы определенная кнопка делала.