[英]JSeparator wont show with 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);
}
但是JSeperator沒有顯示任何想法嗎?
謝謝
您可以嘗試設置分隔符的首選寬度:
sep.setPreferredSize(new Dimension(5,1));
然后,使GridBagLayout用盡分隔符的所有可用高度:
gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;
取自Sun的 JSeparator
指南:
在大多數實現中,垂直分隔符的首選高度為0,水平分隔符的首選寬度為0。這意味着分隔符不可見,除非您設置其首選大小或將其置於布局管理器的控制下例如BorderLayout或BoxLayout對其進行拉伸以填充其可用顯示區域。
垂直分隔符確實有點寬(水平分隔符有點高),所以您應該看到分隔符所在的空間。 但是,除非寬度和高度都不為零,否則不會繪制實際的分界線。
也許您應該設置正確的約束條件?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.