我目前正在尝试使用3x3按钮设置Tic Tac Toe GUI网格,无论何时按下,都会将按钮图标更改为无效或交叉。
我已经设置了一个JButton数组,并添加了一个监听器,以便在按下按钮时进行检查。
我的问题是访问数组中的Button对象,我不得不在我的自定义侦听器构造函数中添加一个参数,以便在我想要更改它时保存按钮对象引用。它按原样工作,但感觉不是很优雅。在actionPerformed中有没有办法在按钮中找到正确的JButton对象,还是有更好的方法来完成这个?
提前致谢
Gson
答案 0 :(得分:0)
将您的CustomActionListener
更改为以下将解决此问题
class CustomActionListener implements ActionListener {
public int a;
public int b;
CustomActionListener()
{
}
public void actionPerformed(ActionEvent e)
{
JButton button = (JButton) e.getSource();
changeButton(a, b, CurrPlayer.CROSSES, button);
}
public void changeButton(int a, int b, CurrPlayer player, JButton button)
{
if (player == CurrPlayer.NOUGHTS)
{
Icon icon = new ImageIcon("Nought.jpg");
button.setIcon(icon);
}
else
{
Icon icon = new ImageIcon("Cross.jpg");
button.setIcon(icon);
}
}
}
您可以使用JButton
方法获取actionEvent.getSource()
引用。
并向按钮添加动作侦听器,如下所示
buttons[i][j].addActionListener(new CustomActionListener());
希望这对你有所帮助。