Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPanel在子面板之间创建空白_Java_Swing_Jpanel_Layout Manager_Cardlayout - Fatal编程技术网

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()
将使其尽可能小,以显示最大的面板。我想这就是问题所在。卡片布局中的其他面板需要更多空间。这可能是真的,但如何解决这个问题?我不能在窗口底部设置空白空间吗?“如何解决这个问题?”你可以从我在评论的第一句中给出的建议开始。