JPanel在子面板之间创建空白空间

时间:2014-03-04 10:03:15

标签: 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(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,这是Window内的CardLayout。最后一个add(finalPanel)指的是CardLayout的面板。

这段代码有效,但这就是结果 enter image description here

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  

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

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

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

阅读Layout Managers上Swing教程中的部分,了解更多信息和示例。