我正在尝试在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;
}
}
此代码目前按照我的意愿执行,但它同时运行,因此更改图标,然后立即将其更改回原始图标。如何点击将其更改为selected
,然后第二次点击将其更改为king
图标?
答案 0 :(得分: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;
}
}
这样,只有在第一个条件的计算结果为if
时,才会检查第二个false
子句。
答案 1 :(得分:2)
更简单的解决方案:使用JToggleButton并通过setIcon(...)
和setSelectedIcon(...)
设置其Icon及其selectedIcon。
答案 2 :(得分:2)
考虑将代码压缩为一个setIcon()
调用:
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == b[7][4]) {
b[7][4].setIcon(selected ? king : defau1t);
selected = !selected;
}
}