2014-04-28 47 views
2

我正在嘗試將一個JTabbedPane添加到面板上,其上方有用於控件的按鈕。我正在使用MigLayout。MigLayout - 選擇性組件填充

但是,我不能讓JTabbedPane填充沒有按鈕也填充時,他們​​不需要。

採取以下SSCCE:

public static void main(String[] args) { 
    JPanel panel = new JPanel(new MigLayout(new LC().fill())); 
    panel.add(new JButton("+")); 
    panel.add(new JButton("-"), "wrap"); 
    panel.add(new JTabbedPane(), "span, grow"); 
    JFrame frame = new JFrame(); 
    frame.add(panel); 
    frame.setSize(new Dimension(300, 500)); 
    frame.setLocationRelativeTo(null); 
    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

這將產生一個面板,看起來像這樣:

enter image description here

但是,如果我請從佈局限制fill()JPanel panel = new JPanel(new MigLayout(new LC()));),它看起來像這樣:

enter image description here

如何使JTabbedPane填充內容區域而JButton不填充?

+0

您已刪除最後一個問題。你有解決方案嗎? – Braj

+0

我有一個解決方案,如果你需要。 – Braj

回答

3

如果你不想約束被應用到所有的單元格,不要告訴佈局;-)相反,使用列和行約束:三列,只讓最後一個填充和增長,兩行與last last

JPanel panel = new JPanel(new MigLayout("", "[][][fill, grow]", "[][fill, grow]")); 
panel.add(new JButton("+")); 
panel.add(new JButton("-"), "wrap"); 
panel.add(new JTabbedPane(), "span, grow"); 
+0

!! yay @kleopatra我知道你會通過哈哈。我還沒有弄清楚列和行約束。我擺弄它,但沒有任何工作。謝謝。 – ryvantage

+0

問題:爲什麼參數作爲**列**約束不適用於**所有列**? JTP在它自己的**行**中,但爲什麼列約束不適用於與JTP相同列中的組件? – ryvantage

+0

閱讀白皮書,所有在這裏寫滿:-) – kleopatra