我要添加使用的GridBagLayout两个部件之间的垂直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;

其他提示

来自的 Sun的指南JSeparator

  

在大多数实现中,一个垂直   分离器具有为0的优选高度,   和水平隔板具有   的0。优选的宽度这意味着   隔膜,没有,除非你可见   任一组其优选大小或放   它在一个布局的控制下   经理如BorderLayout的或   BoxLayout的,绵延它填补   其可用显示区域。

     

在垂直隔板确实有一个位   宽度(和水平位的   高),所以你应该看到一些空间   其中分离器是。但是,那   实际的分割线不绘制   除非宽度和高度均为   非零的。

也许你应该设定正确的约束?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top