首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSeparator不会在GridBagLayout中显示

JSeparator不会在GridBagLayout中显示
EN

Stack Overflow用户
提问于 2010-03-11 22:32:57
回答 2查看 12.1K关注 0票数 11

我想使用GridBagLayout在两个组件之间添加一个垂直JSeparator。我的代码如下:

代码语言:javascript
复制
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没有显示,有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-11 22:56:39

您可以尝试设置分隔符的首选宽度:

代码语言:javascript
复制
sep.setPreferredSize(new Dimension(5,1));

然后,让GridBagLayout用完分隔符的所有可用高度:

代码语言:javascript
复制
gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;
票数 17
EN

Stack Overflow用户

发布于 2010-03-11 22:43:54

摘自Sun的JSeparator 指南

在大多数实现中,垂直分隔符的首选高度为0,水平分隔符的首选宽度为0。这意味着分隔符不可见,除非您设置其首选大小或将其置于布局管理器(如BorderLayout或BoxLayout )的控制下,该管理器会拉伸分隔符以填充其可用显示区域。

垂直分隔符确实有一点宽(水平分隔符有一点高),所以您应该看到分隔符所在的一些空间。但是,除非宽度和高度都非零,否则不会绘制实际的分割线。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2425729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档