質問

私はGridBagLayoutのを使用して、2つのコンポーネント間の垂直方向のJSeparatorを追加します。次のように私が持っているコードは、次のとおりです。

public MainWindowBody(){
    setLayout(new GridBagLayout());

    JPanel leftPanel = new InformationPanel();
    JPanel rightPanel = new GameSelectionPanel();

    JSeparator sep = new JSeparator(JSeparator.VERTICAL);
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.NORTH;

    add(leftPanel,gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.VERTICAL;

    add(sep,gbc);

    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.NONE;

    add(rightPanel,gbc);
}

しかしJSeperatorは表示されません、任意のアイデア?

おかげ

役に立ちましたか?

解決

あなたは、セパレータのための適切な幅を設定しようとすることができます:

sep.setPreferredSize(new Dimension(5,1));

次に、GridBagLayoutのは、セパレータのために利用可能なすべての高さを使い切る行います:

gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;

他のヒント

JSeparatorのための Sunののガイドから取らます:

  

ほとんどの実装では、垂直   セパレータは、0の好適な高さを有します   水平セパレータを有しています   0の好ましい幅は、この手段   セパレータは、あなたがない限り表示されません   その推奨サイズを設定するかのどちらかに置きます   その中のレイアウトの制御下に   このようにBorderLayout又はマネージャ   それがいっぱいに広がっBoxLayout   その利用可能な表示領域ます。

     

垂直セパレータは、ビットを持っています   の幅(水平ビットの   高さ)、あなたには、いくつかのスペースが表示されますので、   ここで、セパレータがあります。しかし   実際の境界線が描画されません   幅と高さが両方ある場合を除き   非ゼロます。

たぶん、あなたは右の制約を設定する必要がありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top