2014-10-06 115 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像素。