2014-03-04 79 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