java - 按钮事件上的actionPerformed混淆

标签 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;           
    }
}

此代码目前按照我的意愿执行,但它同时运行,因此更改了图标,然后立即将其更改回原始图标。我怎样才能做到一次单击将其更改为选中,然后第二次单击将其更改回king图标?

最佳答案

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

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;           
    }
}

这样,仅当第一个条件的计算结果为 false 时才检查第二个 if 子句。

关于java - 按钮事件上的actionPerformed混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730739/

相关文章:

Java,向列表添加一个值<pair>

java - 将单选按钮添加到 IF 语句

java - JList 不显示在 JScrollPane 中

java swing组件无法解析

java - ActionListener 中的 Checkystyle 问题 : Reference to instance variable 'x' needs 'this.' in Java

java - 使用太多的听众是否有潜在的减速?

java - let 在 Java 世界中意味着什么?

java - android 中的 static 关键字

java - 如何为翻译内存库/缓存设计高性能的键匹配算法?

java - 按钮上的 getSource 方法出现问题