簡體   English   中英

JSeparator不會與GridBagLayout一起顯示

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM