有可能认识到用唯一的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());
或对此的某种变体。