2013-02-12 6 views
5

これは私のレイアウトです。SwingのFlowLayout

enter image description here

2つのラジオボタンは、歓迎のラベルの下でなければなりません。このような

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

2つのアスタリスクは、ラジオボタンです。

マイコード:

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

? –

+0

WELCOMEラベルの下にある2つのラジオボタンを取得するHpw –

+0

解決方法:FlowLayoutは使用しないでください。メインコンテナにBorderLayoutを使用し、中央コンテナはJRadioButtonを保持するためにGridLayoutを使用する必要があります。 –

答えて

3

あなたのラジオを言わせて、あなたがフローlayout.FirstはnorthpanelのGridBagLayoutのを設定してから必要なコンポーネントを追加する代わりにGridLayoutのORのGridBagLayoutを使用する必要があり、その後GridLayout(0, 1)を持つpanel

add(panel, BorderLayout.NORTH); 
+0

ウェルカムラベルは画面の左端に押し込まれていますが、2つのラジオボタンは必要に応じて一元化されています –

+0

@ user2016977: 'FlowLayout。ようこそパネルの「CENTER」、SoboLAN [ショー](http://stackoverflow.com/a/14838145/230513)。 – trashgod

2

あなたはBorderLayout領域に複数のコンポーネントを追加することはできません、あなたが最後にそれをやっています。あなたはこのように、その中にあなたの歓迎のテキストやnorthtestpanel1を入れ、その後、BorderLayoutであるためにあなたのnorthpanelを変更する必要があります。

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

あなたは程度の問題が中心にwelcomeを入れていることが(私はちょうどそれは多分、推測していますうまく動作します)。解決策がない場合は、それを新しいJPanelにラップし、FlowLayoutFlowLayout.CENTERで使用してください。

1

northpanelnorthpanelを追加します。ボタンとウェルカムラベル。詳細については、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); 
    } 
} 

それは、この(あなたがそれを少しのサイズを変更する必要がありますが)のようになります。あなたの質問は、具体的にどのような

printscreen

+0

うわー..本当にありがとう。私はこのコミュニティによる答えに入れられた努力に本当に驚いている!!良い仕事を続けてください! :) –

+1

@ user2016977それは、コミュニティが巨大な(数十万人の)人たちだからです...ええと、私たちが最高だからです。 'FlowLayout.CENTER'の場合は+1 –

+0

+1です。 – trashgod