Java JPanel在子面板之间创建空白
我正在为家庭作业开发一个Java JPanel在子面板之间创建空白,java,swing,jpanel,layout-manager,cardlayout,Java,Swing,Jpanel,Layout Manager,Cardlayout,我正在为家庭作业开发一个Java应用程序。这是我的密码 JLabel queryHandlerL = new JLabel("Create php to handle query results", JLabel.CENTER); final JCheckBox queryHandlerCB = new JCheckBox(); JPanel checkBoxPanel = new JPanel(new FlowLayout()); checkBoxPanel.add
Java
应用程序。这是我的密码
JLabel queryHandlerL = new JLabel("Create php to handle query results", JLabel.CENTER);
final JCheckBox queryHandlerCB = new JCheckBox();
JPanel checkBoxPanel = new JPanel(new FlowLayout());
checkBoxPanel.add(queryHandlerL);
checkBoxPanel.add(queryHandlerCB);
// Query Panel
// set image
picLabelQuery = new JLabel("",JLabel.LEFT);
picLabelQuery.setIcon(currentPicForm);
JPanel queryPanel = new JPanel();
final JButton queryButton = new JButton("Insert a query");
queryPanel.add(queryButton);
queryPanel.add(picLabelQuery);
// Panel create
final JButton createButton = new JButton("Create");
JPanel createPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING));
createPanel.add(createButton);
JPanel finalPanel = new JPanel(new GridLayout(0, 1,5,2));
finalPanel.add(queryPanel);
finalPanel.add(checkBoxPanel);
finalPanel.add(createPanel);
finalPanel.setBorder(BorderFactory.createTitledBorder("SQL connection"));
setLayout(new GridBagLayout());
add(finalPanel);
我有一个卡片布局
,这是一个窗口
,在卡片布局
中。最后一个add(finalPanel)
是指卡片布局的面板
这段代码可以工作,但这是结果
如何删除面板之间自动创建的空间?您应该pack()
您周围的面板或将高度设置为所需的值
如何删除面板之间自动创建的空间
对面板使用不同的布局管理器。GridLayout将始终调整组件的大小,以占用面板中的所有空间
也许您可以使用BoxLayout或GridBagLayout。还可以使用不同的布局管理器嵌套面板,以获得所需的效果
阅读Swing教程中关于的部分以获取更多信息和示例。您能给出一个我应该添加到面板打包()的示例代码吗?添加所有子面板后,只需在包含所有子面板的面板上调用pack()
。我可以打包()面板吗<代码>finalPanel.pack()代码>给了我一个错误为了更快地获得更好的帮助,发布一个(最简单的完整测试和可读的示例)。请注意,在包含CardLayout
的框架上调用pack()
将使其尽可能小,以显示最大的面板。我想这就是问题所在。卡片布局中的其他面板需要更多空间。这可能是真的,但如何解决这个问题?我不能在窗口底部设置空白空间吗?“如何解决这个问题?”你可以从我在评论的第一句中给出的建议开始。