我正在做一个TicTacToe,我的想法是,在我第一次点击一个按钮时它显示图像“X”,如果我点击其他按钮它会显示图像“O”......然后它继续,交替显示图像。我也试着点击按钮它会显示一个图像,但如果我再次点击该按钮,图像就会消失。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
public class XOButton extends JButton implements ActionListener{
ImageIcon X;
ImageIcon O;
byte value=0;
byte k=0;
public XOButton(){
try {
X=new ImageIcon(this.getClass().getResource("X.png"));
O=new ImageIcon(this.getClass().getResource("O.png"));
addActionListener(this);
} catch (NullPointerException e) {
System.out.println("The image is not Available");
}
}
@Override
public void actionPerformed(ActionEvent e) {
value++;
value %= 2;
if( k%2 == 0) {
switch(value){
case 0:
setIcon(null);
break;
case 1:
setIcon(X);
System.out.println("KX= " + k);
break;
}
k++;
}
else {
switch(value){
case 0:
setIcon(null);
break;
case 1:
setIcon(O);
System.out.println("K0= " + k);
break;
}
k++;
}
}
}
答案 0 :(得分:1)
你的逻辑被打破了,我看到的主要问题是每个XOButton都有自己的ActionListener,一个完全独立于其他所有者,所以每当任何按钮时value
int总是等于0无论先前按下按钮的状态如何,都是第一次按下。
我建议
有关使用图片图标的正在运行的Tic Tac Toe程序的示例,请查看类似问题的this answer of mine。