gpt4 book ai didi

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

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

下面的代码应该重置框架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);

}

但是,它只能通过首先将 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);

}

但是,当我按下重置按钮时,这会卡住程序。

最佳答案

更好的方法是使用重置方法来重置游戏中所有组件的状态,而不是重新创建所有组件。

但是,从可见 GUI 中删除/添加组件的一般规则是:

panel.remove(...);
panel.add(...);
panel.revalidate();
panel.repaint();

将所有新组件添加到框架的内容 Pane 后,您的代码不会执行 revalidate() 和 repaint() 操作。

关于java - JFrame getContentPane.removeAll() 仅在 .setVisible(false) 和 .setVisible(true) 之间工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733755/

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