JButton 动作事件动作监听器

JButton ActionEvent ActionListener

如何控制两个JButton的actionListener先后按下?

我有 2 个 JPanel。在每个 JPanel 中,我都有一个名为 tUsuari 和 tUsuariCPU

的 JButton 矩阵
 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);
                      }
                  }
              }
         }
     }
  }
}

当我从 tUsuari 按下 JButton 时它打印 "hello",然后我从另一个面板按下 JButton 它不打印 "bye"。

为什么有这么多嵌套循环?分成 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");
         }
     }
}

你的逻辑是错误的。如果e.getSource()==tUsuari[i][j],是的,你确实打印出了"Hello"。但是,如果该条件为真,则 e.getSource()==tUsuariCPU[r][s] 不可能为真,因为 e.getSource 不能同时是您的 tUsari 按钮和你的 tUsuariCPU 按钮。相反,如果您按下 CPU 按钮,您将无法通过第一次检查,因为它是 tUsuari 按钮,因此永远不会检查 CPU 按钮。我建议创建两个不同的 actionListener,每个按钮一个,执行您希望特定按钮执行的操作。