2013-02-12 11 views
5

Questo è il mio layout.FlowLayout in Swing

enter image description here

Il pulsante di due radio deve essere sotto l'etichetta di benvenuto.

come questo:

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

i due asterisco sono i pulsanti di opzione.

My Code:

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

Qual è la tua domanda specifica? –

+0

Hpw per ottenere i due pulsanti di opzione sotto l'etichetta WELCOME –

+0

Soluzione: non utilizzare FlowLayout. Utilizzare BorderLayout per il contenitore principale e quindi il contenitore centrale deve utilizzare GridLayout per contenere i JRadioButtons. –

risposta

3

Aggiungere northpanel e northpanel ad un panel avere GridLayout(0, 1) poi

add(panel, BorderLayout.NORTH); 
+0

l'etichetta di benvenuto viene comunque spostata a sinistra sullo schermo ma i 2 pulsanti di opzione sono centralizzati come necessario –

+0

@ user2016977: Prova 'FlowLayout. CENTER' nel pannello di benvenuto, come SoboLAN [mostra] (http://stackoverflow.com/a/14838145/230513). – trashgod

2

non è possibile aggiungere più di un componente ad una regione BorderLayout e si sta facendo, alla fine. È necessario modificare la vostra northpanel essere un BorderLayout, poi mettere il testo di benvenuto e northtestpanel1 al suo interno, in questo modo:

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

Si può avere problemi su Put welcome nel centro (sto solo indovinare, forse funzionerà bene). Se non si dispone di alcuna soluzione, basta avvolgerlo in un nuovo JPanel e utilizzare lo FlowLayout con FlowLayout.CENTER.

1

Devi usare GridLayout OR GridBagLayout invece di Flow-layout.First set GridBagLayout di northpanel e poi aggiungere i componenti necessari, diciamo la radio pulsanti e etichetta di benvenuto. Per maggiori dettagli è possibile consultare 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); 
    } 
} 

sembra che questo (anche se bisogna ridimensionare un po '):

printscreen

+0

wow..Grazie mille..sono davvero stupito dagli sforzi messi nelle risposte di questa comunità !! Mantenere il buon lavoro! :) –

+1

@ user2016977 Questo perché la comunità è enorme (centinaia di migliaia di persone) ... ooh, e perché siamo fantastici: D. –

+0

+1 per 'FlowLayout.CENTER'. – trashgod