有可能认识到用唯一的eventListener按下了btn吗?

我尝试了这段代码,但是没有用

 ActionListener one = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (gr1.getCounter1() < 5) {
                        gr1.setCounter1(gr1.getCounter1() + 1);
                        if (arraybtn[1].isSelected())
                            test1.setIcon(play1a);
                        if (arraybtn[2].isSelected())
                            test1.setIcon(play1b);
                        if (arraybtn[3].isSelected())
                            test1.setIcon(play1c);
                        if (arraybtn[4].isSelected())
                            test1.setIcon(play1d);
                        if (arraybtn[5].isSelected())
                            test1.setIcon(play1e);
                    } else {
                        pn5.setText("No more cards");
                    }
                }
            };


谢谢, !

最佳答案

上面的代码非常需要重构。例如,您有一个JButtons数组,为什么没有一个类似的ImageIcons数组,那么您可以摆脱所有这些if块。

例如:

  ActionListener one = new ActionListener() {
     public void actionPerformed(ActionEvent e) {
        if (gr1.getCounter1() < 5) {
           gr1.setCounter1(gr1.getCounter1() + 1);
           for (int i = 0; i < arraybtn.length; i++) {
              if (arraybtn[i] == e.getSource()) {
                 test1.setIcon(play1Icons[i]);
              }
           }
        } else {
           pn5.setText("No more cards");
        }
     }
  };


并且不要忘记我在其他线程中关于进一步重构的建议,包括创建Player类,Card类,Deck类,GameManager等。

关于您的问题,“在此脚本中,我具有play1a = hand.get(1).getImage();如果我使用其他数组,例如test1.setIcon(play1Icons [i]);,该如何定义变量?”

是手ArrayList吗?解决它的一种方法是做类似的事情

test1.setIcon(hand.get(i).getImage());


或对此的某种变体。

08-04 23:36