gpt4 book ai didi

java - 右键 setIcon() 标记炸弹 - 扫雷

转载 作者:行者123 更新时间:2023-11-30 04:43:55 26 4
gpt4 key购买 nike

我对编程还很陌生,正在尝试制作扫雷 GUI。游戏完美地右键单击 JToggleButton,在按钮上显示了一个代表炸弹的“B”,但是当我在鼠标监听器中用 setIcon() 替换 setText() 时,它会在左键单击和右键单击发生时显示图标。我在 setText() 时没有遇到这个问题。

    public void mousePressed(MouseEvent e){
if(e.isMetaDown())
if(btnPresses == 0)
{
startTime = System.currentTimeMillis();
btnPresses++;
}
//if(btn[y][x].getText().equals("B"))
if(btn[y][x].getIcon()==flag)
{
//btn[y][x].setText("");
btn[y][x].setIcon(null);
if(bombs[y][x]!=BOMB)
markers++;
}
else
{
//btn[y][x].setText("B");
btn[y][x].setIcon(flag);
if(bombs[y][x]==BOMB)
markers++;
else
markers--;
}

我向 Action 监听器添加了 btn[y][x].setIcon(null),这会导致标志图标仅在左键单击时短暂出现,但我宁愿它根本不出现。

最佳答案

您需要区分鼠标左键单击 MouseEvent.BUTTON3 和鼠标右键单击 MouseEvent.BUTTON3,然后采取相应的操作。例如,当我做这样的事情时,我通过以下方式在模型中设置“flag” boolean 值(使用 MVC):

@Override
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
model.upDateButtonFlag();
}
}

MouseListener 只能用于设置或取消设置标志。否则,您应该让 JButton 通过其 ActionListener 响应左键单击。

关于java - 右键 setIcon() 标记炸弹 - 扫雷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com