gpt4 book ai didi

java - CardLayout 交换面板

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

在我的项目中,我在 JFrame 中有一个 JPanel (bottomPanel) 需要交换,因此我在 BottomPanel 上使用 CardLayout。

在我的父 JFrame 中,我基本上在方法 (setBottomPanel) 中获取了此代码:

bottom.add(p.toString(),p);
bottomLayout.show(bottom, p.toString());

我在父 JFrame 的构造函数中调用它一次,它工作正常。但是,我将对这个父 JFrame 的引用传递给其他 JPanel,如果我在引用上调用 setBottomPanel(),它不会产生任何效果,面板不会更改。我确实使用了 bottomLayout.next(bottom) ,这确实改变了面板,但变成了一个空面板。

更新:

看起来加载正确,我将代码更改回调用 next() 但传递的 JPanel 是空的。这可能是因为我在添加到底部面板的 JPanel 上使用 GridLayout 吗?我根本没有传递布局引用...

最佳答案

您确定您提供的代码示例反射(reflect)了您正在使用的源代码吗?因为,假设 bottomJPanel 并且 pJComponent,您对 bottom. add 应该传递组件,然后传递布局约束:

bottom.add (p, p.toString());

当您从其他 JPanel 调用 setBottomPanel() 时,您是否再次将组件添加到 bottom 还是仅在它们是新的时才添加它们?如果是前者,很可能 bottom 根本没有被重新验证或重新绘制。来自Java API :“如果组件已添加到已显示的容器中,则必须在该容器上调用 validate 来显示新组件。”

关于java - CardLayout 交换面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2326555/

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