2011-06-04 12 views
13

Mam panel, który używa układu przepływu.element podziału układu ruchu swing

Jak mogę zrobić przerwę w układzie przepływu? Podobnie jak <br/> w html. Jakiś specjalny element podziału lub inny znak wskazujący, że określony element i wszystkie kolejne muszą przejść do następnej linii.

Odpowiedz

13

W przypadku takim jak ten, chciałbym postawić dwa pojemniki z FlowLayout jeden na górze siebie nawzajem wewnątrz BoxLayout. Zagnieżdżanie układów jest dość tanie.

+0

Heh, zagnieżdżanie jest dobre, ale niewystarczające, tworzy niepotrzebne szczeliny, gdy wysokość pojemnika jest duża. –

+3

Nie ma powodu, aby istniały luki, jeśli je poprawnie zakodowałeś. –

+0

Opublikuj próbkę, jeśli masz na to ochotę. – Buffalo

0

bym zrobić wiele paneli zastępcze bez wypustkami, a następnie użyć kodu do pracy, gdy komponent musi być przeniesiona do następnego panelu, ponieważ jest poniżej minimalnego progu szerokości. To brzydkie, ale powinno działać. Trzeba by było usunąć i dodać wszystkie ręcznie i w EDT.

10

Wrap Layout może być rozwiązaniem dla Ciebie. Automatycznie przenosi komponenty do następnego wiersza, gdy linia jest pełna.

+0

Wielkie dzięki. Uratowałeś mi dzień. –

8

Chcesz ręcznie podzielić komponenty w wielu wierszach? Więc wiesz, gdzie chcesz, żeby była ta linia.

W tym przypadku byłoby użyć 3 panele:

  • 1 panelu zawierającego 2 pozostałych płyt z GridLayout z 1 kolumnie
  • 2 paneli wewnątrz GridLayout, każdy z FlowLayout

Przykładowy kod:

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); 
      } 
     } 
    } 

można dodać dowolną liczbę nowych paneli z FlowL ayout jak chcesz. Za każdym razem, gdy robisz BR, ustawiasz następny panel jako aktywny (możliwe, że kreujesz go dynamicznie).