2011-06-04 46 views
13

我有使用流佈局的面板。擺動流佈局中斷元素

我該如何在流佈局中打破?像在html中的<br/>一樣。一些特殊的中斷元素或另一個技巧來指示指定的元素和所有後續必須轉到下一行。

回答

13

另一個佈局在這樣的情況下,我把兩個容器具有FlowLayout一個之上彼此在BoxLayout內。嵌套佈局相當便宜。

+0

嘿,嵌套是好的,但不夠,當容器的高度很大時,它會產生不必要的間隙。 – 2011-06-04 17:44:07

+3

如果您正確編碼,沒有理由存在差距。 – 2011-06-04 17:58:08

+0

發佈樣本,如果你在它。 – Buffalo 2013-06-25 11:12:38

0

我想讓多個佔位符面板不帶插入,然後使用一些代碼來確定何時需要將組件移動到下一個面板,因爲它低於最小寬度閾值。這很醜,但它應該工作。您需要手動完成所有的移除和添加工作,並在EDT內完成。

10

Wrap Layout可能是您的解決方案。當一條線已滿時它會自動將組件移動到下一行。

+0

非常感謝。你已經救了我的一天。 – 2018-01-09 13:36:33

8

您想手動將組件分成多行嗎?所以你知道你想要換行的地方。

在這種情況下我會使用3個面板:

  • 1含有其它2個面板用GridLayout的1列
  • 2板的GridLayout的內部,每一個的FlowLayout
面板

示例代碼:

frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    { 
     panel = new JPanel(); 
     frame.getContentPane().add(panel, BorderLayout.NORTH); 
     panel.setLayout(new GridLayout(0, 1, 0, 0)); 
     { 
      panel_1 = new JPanel(); 
      panel.add(panel_1); 
      { 
       lblPanelFlowlayout = new JLabel("Panel 2: FlowLayout"); 
       panel_1.add(lblPanelFlowlayout); 
      } 
     } 
     { 
      panel_2 = new JPanel(); 
      panel.add(panel_2); 
      { 
       lblPanel = new JLabel("Panel 3: FlowLayout"); 
       panel_2.add(lblPanel); 
      } 
     } 
    } 

您可以用流1添加儘可能多的新面板如你所願。每次你做無線電通信時,你現在將下一個面板設置爲激活狀態(可能會動態創建)。