2012-01-16 66 views
3

是否可以在Gridlayout verticaly中添加組件?我的意思是上一個之上的下一個?Java Swing Gridlayout垂直約束

謝謝

+2

您應該接受更多答案。您已經提出了55個問題,但其中不到一半的人接受了答案。 – Paul 2012-01-16 04:39:11

回答

3

沒有,沒有佈局,可以讓你從下向上垂直堆疊,至少我所知道的。如果你想要垂直堆疊,你可以使用帶有單列的GridLayout或帶縱軸的BoxLayout。通過嵌套面板和組合佈局,您應該可以輕鬆獲得所需的內容,例如具有垂直佈局的面板全部佈置在水平容器中。

+0

['List']的好用例(http://docs.oracle.com/javase/7/docs/api/java/util/List.html)或['Deque'](http:// docs .oracle.com/javase/7/docs/api/java/util/Deque.html)的實現。 – trashgod 2012-01-16 05:07:42

1

雖然這個答案與沒有關係,但是網格佈局,我強烈推薦使用JGoodies表單佈局。它非常靈活。 http://www.jgoodies.com/freeware/forms/index.html

      /* 1     2  3  4 5     6  7  8  9*/  
      String col1 = "left:max(20dlu;pref), 3dlu, 70dlu, 15dlu,left:max(10dlu;pref),10dlu, 70dlu, 70dlu, 70dlu"; 
          /* 1 2  3 4 5 6 7 8 */ 
      String row1 = " p, 5dlu, p, 3dlu, p, 5dlu, p, 9dlu, "; 
      FormLayout layout = new FormLayout(col1, row1 + row2 + row3 + row4 + row5 + row6); 

      JPanel panel = new JPanel(layout); 
      panel.setBorder(Borders.DIALOG_BORDER); 

      // Fill the table with labels and components. 
      CellConstraints cc = new CellConstraints(); 
      panel.add(createSeparator("Registration Information"), cc.xyw(1, 1, 7)); 
      panel.add(new JLabel("Patient ID"), cc.xy(1, 3)); 
      panel.add(pid, cc.xyw(3, 3, 1)); 
      panel.add(new JLabel("Date and Time"), cc.xy(5, 3)); 

可以手代碼來繪製每個部件的任何在所定義的佈局設計即WRT其中對col和行。 即使是垂直排列。 閱讀白皮書:http://www.jgoodies.com/articles/forms.pdf

3

佈局一樣從上到下的BoxLayout和網格佈局顯示組件當你使用:

panel.add(someComponent); 

,但你可以隨時使用:

panel.add(someComponent, 0); 

在插入零部件最佳。