JMenu项目没有调用方法,直到点击其他地方

时间:2016-03-12 21:57:26

标签: java

这是一个非常奇怪的错误和非常大的程序,但我会将代码发布到彼此互动的位置。

所以我有一个扫雷游戏,其中一个"作弊"功能已实施,它揭示了电路板上的所有地雷。

这是调用它的方法:

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时,它的工作正如计划的那样我还必须点击电路板的瓷砖然后它显示它。我认为它与董事会没有任何关系,但我和其他6人都可以解决这个问题。

任何帮助都很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

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

public void actionPerformed(ActionEvent event) {

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

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