gpt4 book ai didi

java - JMenu 项在单击其他位置之前不会调用方法

转载 作者:行者123 更新时间:2023-12-01 10:14:48 27 4
gpt4 key购买 nike

这是一个非常奇怪的错误,也是一个非常大的程序,但我将发布它们相互交互的代码。

所以我有一个扫雷游戏,其中实现了“作弊”功能,它会显示棋盘上的所有地雷。

这是调用它的方法:

public void showBombTile(){

for(int y = 0; y < m_columns ; y++){
for(int x = 0; x < m_rows ; x++){


if(m_board.get(y).get(x).isMine()){

m_board.get(y).remove(x);
m_board.get(y).add(x, new Mine(true,true,false,
"images/mine.png"));

for(int i = 0; i < m_board.size(); i++){
for(int j = 0; j < m_board.size(); j++){
if(m_board.get(i).get(j).isMine() && i != x && j != y){


m_board.get(i).remove(j);
m_board.get(i).add(j, new Mine(true,true,false,
"images/mine.png"));

}
}
}

}
}
}
}

通过此方法调用此方法:

public void actionPerformed(ActionEvent event) {

if(event.getSource()== m_revealBomb){
m_board.showBombTile();
}
}

它的创建和处理程序加法器在这里:

    m_revealBomb = new JMenuItem("Reveal Bombs");
m_revealBomb.addActionListener(this);

当我单击 m_revealBomb JMenuItem 时,它完全按照计划工作,然后我还必须单击面板的图 block ,然后它会显示它。我认为这与董事会无关,但我和其他 6 个人都可以解决这个问题。

任何帮助都很棒。谢谢!

最佳答案

假设这是用 Swing 实现的,请尝试在 actionPerformed() 方法内的应用程序框架上调用 repaint():

public void actionPerformed(ActionEvent event) {

if(event.getSource()== m_revealBomb){
m_board.showBombTile();
yourFrame.repaint();
}
}

我假设您在单击时重新绘制框架,这就是为什么它在单击棋盘后显示所需的游戏状态。

关于java - JMenu 项在单击其他位置之前不会调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35963805/

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