我正在编写一个激烈的游戏并且有一个重要的问题。在这个游戏中,多亏了搜索和找到revalidate()
方法以及repaint()
方法,我成功地删除了一个JPanel
并将另一个放置JPanel
在它的位置。
然而......这是问题开始的地方。我能够做到这一点,但是有多个(范围可以从 9 到 729)这样的 JPanel 需要更改。我可以在 JFrame 中做到这一点没问题......但是我目前面临的问题是,虽然一个 JPanel 已正确替换,但当我执行下一个 JPanel 时,它也已正确替换。但是,经过多次测试后,我发现当通过将 JFrame 拖放到屏幕上或任何其他此类更改来刷新 JFrame 时,旧更改的 JPanel 就会消失。
有什么办法可以让新添加的 JPanel 永久存在而不是当且仅当 JFrame 被刷新时消失?
这是代码:
int a = f%27;
int b = g%27;
int c = a%9;
int d = b%9;
winningletter.setFont(new Font("Times New Roman", Font.BOLD, 17));
miniwin.add(winningletter);
((JPanel)((JPanel)newDossier.Board.metametametaboard[f/27][g/27].getComponent((a/9)*3+b/9)).getComponent((c/3)*3+d/3)).removeAll();
((JPanel)((JPanel)newDossier.Board.metametametaboard[f/27][g/27].getComponent((a/9)*3+b/9)).getComponent((c/3)*3+d/3)).setLayout(new GridLayout(1,1));
((JPanel)((JPanel)newDossier.Board.metametametaboard[f/27][g/27].getComponent((a/9)*3+b/9)).getComponent((c/3)*3+d/3)).add(miniwin);
((JPanel)((JPanel)newDossier.Board.metametametaboard[f/27][g/27].getComponent((a/9)*3+b/9)).getComponent((c/3)*3+d/3)).repaint();
metametametaminiminiwincheck[f/3][g/3]=winningletter.getText();
boardChanger(f, g, 4);
WinChecker(s, f,g,3,4,metametametaminiminiwincheck,x);