如果已经点击,则停止Jbutton进行更改

时间:2017-10-14 18:36:08

标签: java jframe jbutton actionlistener

新手程序员在这里尝试制作一个tic tac toe GUI游戏。我虽然坚持我的计划。我不确定如何检查两次击中同一个方格。我在我的actionListener里面想了一个if语句,说

if(button clicked = True)
{    
     JOptionPane.showMessageDialog((null, "ERROR", "Button already used. 
     Please hit again to change back", JOptionPane.ERROR_MESSAGE); 
     // STOP something along those lines
}
else 
{
     //Do nothing
}

会工作,但我无法让程序正常工作。我尝试了newTurn.getmodel()。isPressed()并且无效,现在使用我当前的代码,程序在每次移动后输出错误消息,并且更改仍然出现在板上。这是我的方法代码。任何帮助表示赞赏。

private class buttonListener implements ActionListener
{

    public void actionPerformed(ActionEvent e) 
    {   
        JButton newTurn = (JButton)e.getSource(); //get the particular button that was clicked
        if(switchMove%2 == 0)
            newTurn.setText("X");
        else
            newTurn.setText("O");

        if(newTurn.isEnabled())
            JOptionPane.showMessageDialog(null, "ERROR", "Button already used. Please hit again to change back", JOptionPane.ERROR_MESSAGE);

        if(checkForWin() == true)
        {
            JOptionPane.showConfirmDialog(null, "Game Over.");
            resetButtons();
        }

        switchMove++;
    }  

switch move只是一个int设置为0所以evens是X而O是奇数。我的if(newTurn.isEnabled())是我的问题

1 个答案:

答案 0 :(得分:0)

这是我已解决的代码。

    public void resetButtons()
{
    for(int i = 0; i <= 8; i++)
    {
        buttons[i].setText("");
        buttons[i].setEnabled(true);
    }


}

private class buttonListener implements ActionListener
{

    public void actionPerformed(ActionEvent e) 
    {   
        JButton newTurn = (JButton)e.getSource(); 
        if(switchMove%2 == 0)
            newTurn.setText("X");
        else
            newTurn.setText("O");

        if(newTurn.isEnabled())
            newTurn.setEnabled(false);

        if(checkForWin() == true)
        {
            JOptionPane.showConfirmDialog(null, "Game Over.");
            resetButtons();
        }

        switchMove++;
    }

在actionPerformed()方法中,我在单击按钮后将按钮设置为setEnabled(false)。然后当游戏结束时,先前禁用的按钮将通过resetButtons方法设置为setEnabled(true)。