2014-10-06 103 views
1

我放了幾個JPanels,每個JPanel包含一個GridLayout中的JLabel + JTextField(如下所示)。 我試圖儘可能減少單元格之間的空間。 我做了以下內容:GridLayout空邊距

GridLayout resultsPanelLt = new GridLayout(0, 3, 0, 0); 
resultsPanelLt.setVgap(0); 
resultsPanelLt.setHgap(0); 
JPanel resultPanel = new JPanel(resultsPanelLt); 

// I added several panels like this one 
JPanel markUpPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); 
markUpPanel.setPreferredSize(new Dimension(100, 20)); 
markUpPanel.setMaximumSize(new Dimension(100, 20)); 
markUpPanel.setBorder(BorderFactory.createEmptyBorder(0,0,0,0)); 
markUpPanel.add(new JLabel("MarkUp")); 
JTextField markUp = new JTextField(); 
markUp.setMargin(new Insets(0, 0, 0, 0)); 
markUpPanel.add(markUp); 

resultPanel.add(markUpPanel); 

I would like to remove the spaces between rows 我想刪除行之間的空間或把他們爲1px的實例。

+0

新的GridLayout(0,3,0,0)爲什麼你使用0行? – StanislavL 2014-10-06 12:23:49

+3

1)請參閱[我是否應避免使用Java Swing中的set(Preferred | Maximum | Minimum)大小方法?](http://stackoverflow.com/q/7229226/418556)(是)2)更好的幫助更快,發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整可驗證示例)。 3)而是'pack()'是我們的朋友。 – 2014-10-06 12:57:09

回答

4

當您創建並添加面板到您的resultPanel其中GridLayout,子面板創建FlowLayout。這些兒童面板有5個像素的水平和垂直間隙。

創建者是這樣的:

JPanel markUpPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 0, 0)); 

FlowLayout類有一個構造函數,你可以指定水平和veritcal差距,通過640像素的那些。如果您不指定它們,則默認值爲5像素。