2013-07-08 90 views
5

我試圖佈局組件並希望以特定方式設置寬度。據我所知,miglayout設置寬度,如「寬度最小:前:最大」。所以,在我的情況,我想以下幾點:使用miglayout設置寬度

layout explained

我的問題是與COMP2。它停止增長大約200px後,我不明白爲什麼,因爲我沒有指定最大寬度。

我也檢查了miglayout擺動演示,但他們沒有我那裏的確切情況。他們有一個無限寬度,但沒有指定最小寬度。

爲了確保面板展開,我將面板的背景設置爲灰色,並且我可以看到它展開時沒有任何問題。

請告訴我,如果有什麼需要澄清,我會很樂意嘗試解釋更好。

編輯:這裏是一個SSCCE

import java.awt.Color; 
import javax.swing.*; 
import net.miginfocom.swing.MigLayout; 

public class SSCCE { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(new MigLayout(
       "", 
       "[grow, fill]", 
       "")); 
     panel.setBackground(Color.LIGHT_GRAY); 

     JButton comp1 = new JButton("Comp1"); 
     JButton comp2 = new JButton("Comp2"); 
     JButton comp3 = new JButton("Comp3"); 

     panel.add(comp1, "width 50:150:150, growx"); 
     panel.add(comp2, "growx"); 
     panel.add(comp3, "width 50:70:70, growx");  

     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true);  
    } 
} 

我不會成長,但我想它採取一切可用的空間,而事實並非如此。它可以與面板上的設置有關嗎?

編輯2:有了這個代碼:

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2, "width 10:n:n"); 
panel.add(comp3, "width 50:70:70, right"); 

我得到這個:

enter image description here

但我想中間的組件佔用全部可用空間。

+0

_stops後約200px_增長無法重現:所有的增長(在結尾部分是同樣大小的)最好的證明演示行爲 – kleopatra

+0

現在我已經加入了一個SSCCE SSCCE。任何幫助表示讚賞。 :) – Goatcat

+0

不太明白爲什麼你讓所有的列增長,如果你只想讓其中一個佔據多餘的空間 – kleopatra

回答

6

感覺自由:-)

這裏有一個片段,讓所有的額外空間的中間列。

JPanel panel = new JPanel(new MigLayout(
     "debug", 
     "[][grow, fill][]", 
     "")); 
JButton comp1 = new JButton("Comp1"); 
JButton comp2 = new JButton("Comp2"); 
JButton comp3 = new JButton("Comp3"); 

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2); 
panel.add(comp3, "width 50:70:70");  
+0

Wham bam,問題解決了。謝謝你,先生! :D – Goatcat

+3

很高興我能幫忙,善良的小姐:-) – kleopatra