2014-03-04 82 views
-1

我正在开发一个Java应用程序作业。这是我的代码JPanel创建子面板之间的空白空间

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); 

我有一个CardLayout这是该CardLayoutWindow。最后的add(finalPanel)是指CardLayout的面板。

这段代码的作品,但这样的结果 enter image description here

如何删除在面板之间自动创建的空间呢?

+1

为了尽快获得更好的帮助,请发布[MCTaRE](http://stackoverflow.com/help/mcve)(最小完整测试和可读示例)。请注意,在包含“CardLayout”的框架上调用'pack()'将使其尽可能小,以显示**最大的**面板。我怀疑这是问题。卡布局中的其他面板需要更多空间。 –

+0

这可能是真的,但如何解决这个问题?我不能在窗口底部设置空白空间吗? – r4id4

+1

*“如何解决这个问题?”*您可以先听取评论第一句中提供的建议。 –

回答

0

如何删除面板之间自动创建的空间?

对面板使用不同的布局管理器。 GridLayout将始终调整组件的大小以占用面板中的所有空间。

也许你可以使用BoxLayout或GridBagLayout。您还可以嵌套具有不同布局管理器的面板以获得您想要的效果。

阅读有关Layout Managers的Swing教程的部分以获取更多信息和示例。

+0

谢谢GridBagLayout()解决了我的问题 – r4id4

0

您应该pack()您的周围面板或将高度设置为所需的值。

+0

你能给我一个示例代码,我应该添加到包()面板? – r4id4

+0

添加完所有子面板后,只需在包含所有子面板的面板上调用'pack()'。 – Smutje

+0

我可以包装()面板吗? 'finalPanel.pack();'给我一个错误 – r4id4