缩小JPanels之间的差距

时间:2013-03-25 04:23:03

标签: java swing layout jpanel flowlayout

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

我让它们工作但是当它们在滚动面板中时它们在垂直方向上间隔得太远。我尝试更改边距,更改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

由于我要堆叠这么多,我希望它们几乎一个在另一个之上,但我似乎可以消除它们之间的差距。

这是怎么做到的?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

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

setLayout( new FlowLayout(...) );

编辑:

更改差距后,您还会失去主面板顶部/底部的间隙,因此您可能需要在面板中添加EmptyBorder