gpt4 book ai didi

java - 当 jFrame 刷新时,旧的 jPanel 消失

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

我正在编写一款激烈的游戏,并且有一个重要的问题。在这个游戏中,通过搜索并找到 revalidate() 方法和 repaint() 方法,我成功删除了 JPanel 并将另一个 JPanel 放在原来的位置。

然而...这就是问题开始的地方。我能够做到这一点,但有多个(范围从 9 到 729 个)这样的 JPanel 需要更改。我可以在 JFrame 中执行此操作,没有问题...但是我当前面临的问题是,虽然一个 JPanel 被正确替换,但当我执行下一个 JPanel 时,它也被正确替换。然而,经过多次测试,我发现当 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);

最佳答案

您应该使用CardLayout:CardLayout 类管理共享同一显示空间的两个或多个组件(通常是 JPanel 实例)。

它使您能够以专业方式在面板之间翻转。每个 JPanel 都有一个 ID,您可以使用它来显示它。

链接: http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

代码:

//Where instance variables are declared:
JPanel cards;
final static String BUTTONPANEL = "BUTTONPANEL";
final static String TEXTPANEL = "TEXTPANEL";

//Where the components controlled by the CardLayout are initialized:
//Create the "cards".
JPanel card1 = new JPanel();
JPanel card2 = new JPanel();

//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(card1, BUTTONPANEL);
cards.add(card2, TEXTPANEL);

调用JPanel显示:

 CardLayout cl = (CardLayout)(cards.getLayout());
cl.show(cards, BUTTONPANEL);

关于java - 当 jFrame 刷新时,旧的 jPanel 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15522323/

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