action对按钮事件的混淆

hys*_*tic 0 java swing actionlistener

我试图在java中制作一个游戏,当按下一个按钮时我希望它改变图标以指示该按钮已被选中,然后当再次点击它时我想将其更改为其原始图标以显示它已被取消选择.

public void actionPerformed(ActionEvent e)
{
    if(e.getSource() == b[7][4] && selected == false)
    {
        b[7][4].setIcon(selected);
        selected = true;
    }

    if(e.getSource() == b[7][4] && selected == true)
    {
        b[7][4].setIcon(king);
        selected = false;           
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码目前按照我的意愿执行,但它同时运行,因此更改图标,然后立即将其更改回原始图标.如何将其更改为一次selected,然后第二次单击将其更改为king图标?

lar*_*red 5

else在下一个之前使用if链接它们:

public void actionPerformed(ActionEvent e)
{
    if(e.getSource() == b[7][4] && selected == false)
    {
        b[7][4].setIcon(selected);
        selected = true;
    }
    else if(e.getSource() == b[7][4] && selected == true)
    {
        b[7][4].setIcon(king);
        selected = false;           
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,if只有第一个条件的计算结果才会检查第二个子句false.