我想使用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没有显示,有什么想法吗?
谢谢
发布于 2010-03-11 22:56:39
您可以尝试设置分隔符的首选宽度:
sep.setPreferredSize(new Dimension(5,1));然后,让GridBagLayout用完分隔符的所有可用高度:
gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;发布于 2010-03-11 22:43:54
摘自Sun的JSeparator 指南
在大多数实现中,垂直分隔符的首选高度为0,水平分隔符的首选宽度为0。这意味着分隔符不可见,除非您设置其首选大小或将其置于布局管理器(如BorderLayout或BoxLayout )的控制下,该管理器会拉伸分隔符以填充其可用显示区域。
垂直分隔符确实有一点宽(水平分隔符有一点高),所以您应该看到分隔符所在的一些空间。但是,除非宽度和高度都非零,否则不会绘制实际的分割线。
也许你应该设置正确的约束?
https://stackoverflow.com/questions/2425729
复制相似问题