【发布时间】:2017-05-29 21:21:38
【问题描述】:
我正在使用 NetBeans 为学校工作。我有一个巨大的 JPanel,其中包含一个巨大的 JFrame。那个 JFrame 作为 5 个小 JFrame,1 个是带有按钮的菜单,其他的是带有文本的框,当我在按钮中选择时它们会交换。 当一个框显示其他框不可见时,我使用以下代码(不知道它是否是最好的):
public ConversorUI() {
initComponents();
PanelVazio.setVisible(true);
PanelTemp.setVisible(false);
PanelComp.setVisible(false);
PanelMoedas.setVisible(false);
this.pack();
}
我的问题是,当我运行我的程序时,我有一个很大的空间,什么都没有,只有在它下面才会出现组件。我希望它们出现在我的窗口顶部。我能做些什么 ?
回答 经过一段时间的搜索,我才意识到我可以将布局从 JPanel 设置为卡片布局,并在彼此之上创建 JPanel,并使用代码激活它们:
private void DinheiroButtonActionPerformed(java.awt.event.ActionEvent evt) {
//Remove Panels
CAIXA.removeAll();
CAIXA.repaint();
CAIXA.revalidate();
//Add Panels
CAIXA.add(DinheiroBox);
CAIXA.repaint();
CAIXA.revalidate();
}
【问题讨论】:
-
为了更好的帮助,请创建并发布一个有效的minimal reproducible example,一个小型,实际上是最小的程序,我们可以不加改动地编译和运行,没有外部依赖(例如数据库或图像),这直接向我们展示了您的问题。还可以考虑发布两张图片的链接,一张显示所需的 GUI,另一张显示观察到的。
-
1) 除了@HovercraftFullOfEels 建议的 MCVE,提供 ASCII 艺术或 GUI 的 预期 布局的最小尺寸的简单绘图,如果可调整大小,则具有更大的宽度和高度。 2) 使用仅偶尔出现的组件的最佳策略是将其和空白面板放入
CardLayout中,如this answer 所示。 -
There i have an huge JPanel that contains a huge JFrame.- 不,您不这样做,因为您无法将 JFrame 添加到 JPanel。That JFrame as 5 small JFrames,- 您不能将 JFrame 添加到 JFrame。因此,除了发布您的minimal reproducible example 之外,还要使用适当的术语提出适当的问题。此外,变量名称不应以大写字符开头。发布代码时遵循 Java 约定。
标签: java swing netbeans jpanel layout-manager