Aly*_*Aly 7 java user-interface swing gridbaglayout
我想使用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);
}
Run Code Online (Sandbox Code Playgroud)
但JSeperator没有显示任何想法?
谢谢
Tho*_*mas 13
您可以尝试为分隔符设置首选宽度:
sep.setPreferredSize(new Dimension(5,1));
Run Code Online (Sandbox Code Playgroud)
然后,使GridBagLayout使用分隔符的所有可用高度:
gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;
Run Code Online (Sandbox Code Playgroud)
摘自Sun的指南JSeparator
:
在大多数实现中,垂直分隔符的首选高度为0,水平分隔符的首选宽度为0.这意味着除非您设置其首选大小或将其置于布局管理器的控制之下,否则分隔符不可见例如BorderLayout或BoxLayout,它会拉伸它以填充其可用的显示区域.
垂直分隔符确实有一点宽度(水平位置有一点高度),因此您应该看到分隔符所在的空间.但是,除非宽度和高度均为非零,否则不绘制实际分割线.
也许你应该设置正确的约束?
归档时间: |
|
查看次数: |
10932 次 |
最近记录: |