小编Oli*_*tes的帖子

JFrame getContentPane.removeAll()仅在.setVisible(false)和.setVisible(true)之间工作

以下代码应该重置框架gameFrame:

private void reset()
{
    moveCount = 0;
    gameFrame.setVisible(false);

    gameFrame.getContentPane().removeAll();
    gameFrame.getContentPane().revalidate();
    gameFrame.getContentPane().repaint();

    board.newBoard();
    createGameUI(board.getWidth(),board.getHeight());

    gameFrame.setVisible(true);

}
Run Code Online (Sandbox Code Playgroud)

但是,它只能通过首先将gameFrame的可见性设置为false,删除所有组件,添加一组新组件,然后将gameFrame设置为可见来实现.

这样做的正确方法是什么?

谢谢,

奥利

编辑:

我试过做:

private void reset()
{
    moveCount = 0;

    //gameFrame.setVisible(false);
    gameFrame.getContentPane().removeAll();

    createGameUI(board.getWidth(),board.getHeight());

    gameFrame.getContentPane().revalidate();
    gameFrame.getContentPane().repaint();
    //gameFrame.setVisible(true);

}
Run Code Online (Sandbox Code Playgroud)

但是,当按下重置按钮时,现在只是冻结程序.

java swing jframe

0
推荐指数
1
解决办法
1112
查看次数

标签 统计

java ×1

jframe ×1

swing ×1