2013-03-25 90 views
0

我有一个简单的类StatPanel,它扩展了JPanel并且有几个JTextFieldsJCheckBox和一对JLabels。该面板将用作一系列用于显示信息的面板,并允许用户编辑某些JTextFields中的数据,我可能将其中大约40个全部堆叠在程序一侧的JScrollPaneJPanel。我使用的布局是GridLayout(0,1)减少JPanel之间的差距

我让它们工作,但是当它们在滚动面板中时,它们的间距相差太大。我尝试更改边距,更改GridLayout中的间距以及更改各种项目的边距。我所做的没有任何事情似乎让他们更接近。

这是StatPanel类的构造函数:

public StatPanel(String statName, String statAbility){ 
     super(); 
     this.skillName = statName; 
     this.setAlignmentY(CENTER_ALIGNMENT); 
     isClassSkill = new JCheckBox(); 
     statLabel = new JLabel(skillName); 
     statTotalField = new JTextField(maxLength + 1); 
     statTotalField.setHorizontalAlignment(JTextField.CENTER); 
     statAbilityLabel = new JLabel("= " + statAbility + " "); 
     statAbilityModField = new JTextField(maxLength); 
     statAbilityModField.setHorizontalAlignment(JTextField.CENTER); 
     statSeperator1 = new JLabel(" + "); 
     statRanksField = new JTextField(maxLength); 
     statRanksField.setHorizontalAlignment(JTextField.CENTER); 
     statSeperator2 = new JLabel(" + "); 
     statMiscModField = new JTextField(maxLength); 
     statMiscModField.setHorizontalAlignment(JTextField.CENTER); 

     this.add(isClassSkill); 
     this.add(statLabel); 
     this.add(statTotalField); 
     this.add(statAbilityLabel); 
     this.add(statAbilityModField); 
     this.add(statSeperator1); 
     this.add(statRanksField); 
     this.add(statSeperator2); 
     this.add(statMiscModField); 
    } 
} 

当我在程序中使用它,它看起来是这样的:

screenshot

正如我将堆这么多他们我希望他们几乎一个在另一个之上,但我似乎可以消除他们之间的差距。

这是如何完成的?

谢谢你的帮助。

回答

2

查看FlowLayout API。默认情况下,JPanel使用默认水平/垂直间距为5像素的FlowLayout。您需要更改布局管理器使用的垂直间距。因此,在你的方法的顶部,你将要添加:

setLayout(new FlowLayout(...)); 

编辑:

一旦更改的差距也将在顶部输间隙/主面板的底部,所以你可能要向面板添加EmptyBorder

+0

+1打我吧 – MadProgrammer 2013-03-25 04:45:37

+0

@MadProgrammer,哇,这是一个变化,通常你比我的键盘快:-) – camickr 2013-03-25 04:50:47

+0

必须先检查所有的假设;) – MadProgrammer 2013-03-25 04:59:31

相关问题