gpt4 book ai didi

Java:在保存游戏时更改 JPanel

转载 作者:行者123 更新时间:2023-12-01 12:05:26 24 4
gpt4 key购买 nike

我正在制作一个小游戏,并且已经实现了保存游戏的保存功能(通过将信息写入新的 XML 文件)。保存需要几秒钟,我想要执行以下操作:当程序保存游戏时,我想更改 JPanel 的外观,当保存完成后,我想返回到另一个页面(显示另一个 JPanel)。我有以下代码:

confirm.addActionListener(new ActionListener () {
@Override
public void actionPerformed(ActionEvent e){
String fileNaam = saveGame.getText();
//This method changes the look of the panel
changePanel();
//This method saves the game
model.saveGame(fileNaam);
//This method takes the user back to a previous page
controller.viewTeamPage();
}
});

发生的情况是游戏被保存并且用户被带回到团队页面,但面板从未改变。 ChangePanel() 方法确实有效,所以这不是问题,但它似乎从未被执行过。我想知道是否有人知道我该如何解决这个问题。

编辑:

private void changePanel () {
panel.removeAll();
panel.repaint();
panel.revalidate();
}

这是更改面板外观的方法,现在我只是删除面板上的所有内容以保持简单。另外,保存不是在单独的线程中完成的,这是我应该看看的吗?

编辑2:我通过使用线程保存游戏并在保存完成后返回团队页面来修复它。请参阅下面的代码。

confirm.addActionListener(new ActionListener () {
@Override
public void actionPerformed(ActionEvent e){
final String fileNaam = saveGame.getText();
changePanel();
Thread t = new Thread (new Runnable () {
@Override
public void run() {
model.saveGame(fileNaam);
controller.viewTeamPage();
}
});
t.start();
}
});

最佳答案

如果您要更改同一面板而不是初始化新面板,那么我认为问题是您需要调用 panel.revalidate 或 panel.repaint 我认为。我为程序生成项目制作了一个演示,我必须这样做才能更改我的面板。

关于Java:在保存游戏时更改 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660406/

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