JSeparatorは文句を言わないのGridBagLayoutを示して
-
19-09-2019 - |
質問
私は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 その利用可能な表示領域ます。
垂直セパレータは、ビットを持っています の幅(水平ビットの 高さ)、あなたには、いくつかのスペースが表示されますので、 ここで、セパレータがあります。しかし 実際の境界線が描画されません 幅と高さが両方ある場合を除き 非ゼロます。
たぶん、あなたは右の制約を設定する必要がありますか?
所属していません StackOverflow