2013-02-12 7 views
5

To jest mój układ.FlowLayout in Swing

enter image description here

Dwa przycisk radiowy powinien być poniżej powitalnym etykiecie.

tak:

__________________________ 
|      | 
|  WELCOME   | 
|   * *   | 
|      | 
|      | 
|      | 
|________________________| 

dwa gwiazdką są przyciski radiowe.

mój kod:

northpanel.setLayout(new FlowLayout(FlowLayout.CENTER)); 
northpanel1.setLayout(new FlowLayout(FlowLayout.CENTER)); 


northpanel.add(welcome); //this welcome text label 

northpanel1.add(r1); //this radio 1 
northpanel1.add(r2); //this radio 2 


add(northpanel,BorderLayout.NORTH); 
add(northpanel1,BorderLayout.NORTH); 
+0

Jakie jest Twoje pytanie konkretnie? –

+0

Hpw, aby uzyskać dwa przyciski opcji pod etykietą WITAJ –

+0

Rozwiązanie: Nie używaj FlowLayout. Użyj BorderLayout dla głównego kontenera, a następnie centralny kontener powinien użyć GridLayout do przechowywania JRadioButtons. –

Odpowiedz

3

Dodaj northpanel i northpanel Do panel mający GridLayout(0, 1) następnie

add(panel, BorderLayout.NORTH); 
+0

Etykieta powitalna jest jednak przesunięta daleko w lewo na ekranie, ale 2 przyciski radiowe są w razie potrzeby scentralizowane –

+0

@ user2016977: Wypróbuj 'FlowLayout. CENTER' na panelu powitalnym, jako SoboLAN [pokazuje] (http://stackoverflow.com/a/14838145/230513). – trashgod

2

Nie można dodać więcej niż jeden składnik do BorderLayout regionu i robisz to w końcu. Musisz zmienić swoje northpanel być BorderLayout, a następnie umieścić swój tekst powitalny i northtestpanel1 wewnątrz niego, tak:

northpanel -> BorderLayout, JFrame's NORTH position 
welcome -> northpanel NORTH position 
northpanel1 -> FlowLayout, northpanel CENTER position 

Możesz mieć problemy o umieścić welcome w centrum (Ja tylko zgadywać, może go działa dobrze). Jeśli nie masz na to żadnego rozwiązania, po prostu umieść go w nowym JPanel i użyj FlowLayout z FlowLayout.CENTER.

1

Musisz użyć GridLayout LUB GridBagLayout zamiast Flow-layout.First ustawić GridBagLayout z northpanel a następnie dodać wymagane składniki, powiedzmy radia przyciski i dobrze wyglądająca etykieta. Aby uzyskać więcej informacji, możesz zapoznać się z here.

5
import javax.swing.*; 
import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.GridLayout; 

public class StackOverflow14837740 
{ 
    public static void main (String[] args) 
    { 
     SwingUtilities.invokeLater (new Runnable() 
     { 
      @Override 
      public void run() 
      { 
       createAndShowGUI(); 
      } 
     }); 
    } 

    private static void createAndShowGUI() 
    { 
     JFrame frame = new JFrame(); 
     frame.setLayout (new BorderLayout()); 
     frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); 

     JPanel northPanel = new JPanel (new GridLayout (2, 1)); 

     JPanel welcomePanel = new JPanel (new FlowLayout (FlowLayout.CENTER));  
     welcomePanel.add (new JLabel ("Welcome")); 

     northPanel.add (welcomePanel); 

     JPanel radioPanel = new JPanel (new FlowLayout (FlowLayout.CENTER)); 

     JRadioButton button1 = new JRadioButton ("Button 1", true); 
     JRadioButton button2 = new JRadioButton ("Button 2", false); 

     ButtonGroup group = new ButtonGroup(); 
     group.add (button1); 
     group.add (button2); 

     radioPanel.add (button1); 
     radioPanel.add (button2); 

     northPanel.add (radioPanel); 

     JPanel middlePanel = new JPanel (new GridLayout (3, 3)); 

     for (int i = 0; i < 3; i++) 
     { 
      for (int j = 0; j < 3; j++) 
      { 
       middlePanel.add (new JButton ("Button " + i + j)); 
      } 
     } 

     JPanel southPanel = new JPanel (new FlowLayout (FlowLayout.CENTER)); 

     southPanel.add (new JLabel ("Whose turn:")); 
     southPanel.add (new JButton ("Reset")); 

     frame.add (northPanel, BorderLayout.NORTH); 
     frame.add (middlePanel, BorderLayout.CENTER); 
     frame.add (southPanel, BorderLayout.SOUTH); 

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

Wygląda to tak (chociaż trzeba go zmienić rozmiar bitowy):

printscreen

+0

Wow ... dziękuję bardzo ... jestem naprawdę zaskoczony wysiłkami włożonymi w odpowiedzi przez tę społeczność !! tak trzymaj! :) –

+1

@ user2016977 To dlatego, że społeczność jest ogromna (setki tysięcy ludzi) ... ooh, a ponieważ jesteśmy niesamowici: D. –

+0

+1 dla 'FlowLayout.CENTER'. – trashgod