Java:在内部方法中查找对象引用

时间:2017-07-15 07:05:57

标签: java oop object methods

我目前正在尝试使用3x3按钮设置Tic Tac Toe GUI网格,无论何时按下,都会将按钮图标更改为无效或交叉。

我已经设置了一个JButton数组,并添加了一个监听器,以便在按下按钮时进行检查。

我的问题是访问数组中的Button对象,我不得不在我的自定义侦听器构造函数中添加一个参数,以便在我想要更改它时保存按钮对象引用。它按原样工作,但感觉不是很优雅。在actionPerformed中有没有办法在按钮中找到正确的JButton对象,还是有更好的方法来完成这个?

提前致谢

Gson

1 个答案:

答案 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());

希望这对你有所帮助。