2009-10-16 21 views
5

我有一個由各種組件組成的組件,例如複選框,滑塊和一些按鈕。我想將它添加到一個滾動窗格並讓滑塊長出來填充所有剩餘的空間。這是沒有問題的,因爲這代碼演示:如何強制組件在Java中的MigLayout中生長

public static void main(String[] args) { 
    JFrame f = new JFrame("Test"); 
    JPanel c = new JPanel(new MigLayout(
      "",   
      "[]5[]10[grow]10[]0[]0[]0[]", 
      "[]" 
    )); 
    c.add(new JCheckBox("")); 
    c.add(new JLabel("Name")); 
    c.add(new JSlider()); 
    c.add(new JButton("1")); 
    c.add(new JButton("2")); 
    c.add(new JButton("3")); 
    c.add(new JButton("4")); 
    f.getContentPane().add(new JScrollPane(c)); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.pack(); 
    f.setVisible(true); 
} 

如果你運行這個和調整框架,滑塊填滿所有的空間。我的問題在於,我想在另一個包含這個不同實例的組件中添加我的組件(帶滑塊的組件)。因此,例如它將包含3個或4個組件,其中滑塊一個在另一個之下。我認爲這將工作:

public static void main(String[] args) { 
    JFrame f = new JFrame("Test"); 
    JPanel c = new JPanel(new MigLayout(
      "",   
      "[]5[]10[grow]10[]0[]0[]0[]", 
      "[]" 
    )); 
    c.add(new JCheckBox("")); 
    c.add(new JLabel("Name")); 
    c.add(new JSlider()); 
    c.add(new JButton("1")); 
    c.add(new JButton("2")); 
    c.add(new JButton("3")); 
    c.add(new JButton("4")); 
    JPanel a = new JPanel(new MigLayout("wrap 1")); 
    a.add(c); 
    f.getContentPane().add(new JScrollPane(a)); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.pack(); 
    f.setVisible(true); 
} 

但它沒有。任何想法爲什麼以及如何解決它?

+0

當我剪切和粘貼代碼,滑塊也_not_增長。我不得不爲它添加一個「growx」約束。 – CarlG 2009-10-16 19:16:28

+0

這很奇怪...你使用什麼樣的mig版本,以及java版本是什麼? (也是什麼操作系統?) – 2009-10-18 02:56:33

回答

8

嘗試改變JPanel a聲明:

JPanel a = new JPanel(new MigLayout("wrap 1", "[grow,fill]")); 
+0

啊哈!謝謝......我需要兩個mig佈局的「填充」參數,但它的工作原理。 :) – 2009-10-18 02:57:56

相關問題