gpt4 book ai didi

java - 更改 JPanel 的实例

转载 作者:行者123 更新时间:2023-12-02 02:57:24 28 4
gpt4 key购买 nike

我已经创建了一个带有加载组件的 JPanel,称为 bkg,所以我想将其更改为 SlideShow,它扩展了 jpanel,并在单击按钮时显示它。这是从按钮调用的代码:

public void startGame(){
bkg.removeAll();
bkg.revalidate();
bkg.repaint();
bkg = new SlideShow();
contentPane.add(bkg, BorderLayout.CENTER);
}

在 SlideShow 构造函数中,我创建了一些测试标签,但是当我单击按钮时,所有旧的 bkg 组件都会消失(如我所愿),但我放置在构造函数中的 SlideShow 组件中没有任何内容出现...如何更改bkg JPanel 到另一个扩展 JPanel 的外部类?

最佳答案

建议:

  1. 当您立即用另一个变量替换该变量所持有的当前对象时,为什么要删除/重新验证/重新绘制 bkg 变量?
  2. 您想要重新验证和重新绘制的是在将 bkg 对象添加到 contentPane 后替换它之后的 contentPane。
  3. 使用 CardLayout 几乎总是比手动交换更好。该教程可以在这里找到:CardLayout tutorial .
  4. 或者,因为看起来您正在重新开始游戏,也许可以为 SlideShow 类提供一个 reset() 方法,该方法将其模型及其可见状态设置为其原始条件.

所以

public void startGame(){

// *** no need for this ***
// bkg.removeAll();
// bkg.revalidate();
// bkg.repaint();


bkg = new SlideShow();
contentPane.add(bkg, BorderLayout.CENTER);

// *** add this ***
contentPane.revalidate();
contentPane.repaint();
}

或者如果您选择重置选项,那么该方法将简化为:

public void startGame(){
bkg.reset();
}

但是,重置方法将是关键,详细信息取决于程序其余部分的结构。

关于java - 更改 JPanel 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42874806/

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