0

私は、いくつか、、、およびいくつかStatPanelを拡張して持つ単純なクラスを持っています。パネルは、情報を表示し、ユーザーが一部のデータを編集できるようにするために使用される一連のパネルとして使用されます。おそらく、プログラムの側面に約40個のパネルを積み重ねます。私が使用しているレイアウトはです。JPanelJTextFieldsJCheckBoxJLabelsJTextFieldsJScrollPane JPanelGridLayout(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);
    }
}

プログラムで使用すると、次のようになります。

スクリーンショット

私はそれらの多くを積み重ねるつもりなので、それらをほとんど積み重ねて欲しいのですが、それらの間のギャップを取り除くように思えます。

これはどのように行われますか?

ご協力ありがとうございました。

4

1 に答える 1

2

FlowLayoutAPIを確認してください。デフォルトでは、JPanelはデフォルトの水平/垂直ギャップが5ピクセルのFlowLayoutを使用します。レイアウトマネージャーが使用する垂直方向のギャップを変更する必要があります。したがって、メソッドの上部に次を追加する必要があります。

setLayout( new FlowLayout(...) );

編集:

ギャップを変更すると、メインパネルの上部/下部のギャップも失われるため、パネルにEmptyBorderを追加することをお勧めします。

于 2013-03-25T04:41:42.887 に答える