2011-07-21 12 views
0

レイアウトを次のように設定したいと考えています:1列5行と中央に配置します。 私はGridLayout(5,0)を使ってみましたが、左側に残っています。適切なレイアウトを設定するには

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.JPanel; 
public class TestSwingListeners1 { 
     private static int cnt1; 
     private static int cnt2; 
     public static void main(String[] args) { 
     JFrame fr1 = new JFrame("Swing Window"); 
     Container cp; 
     JButton bt1; 
     JButton bt2; 
     cnt1 = 0; 
     cnt2 = 0; 
     final String scr = null; 
     final String wnr = null; 
     JButton btOK, btCancel; 
     fr1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     fr1.setSize(200, 200); 
     fr1.setResizable(true); 
     cp = fr1.getContentPane(); 
     cp.setLayout(new GridLayout(5,0)); 
     // cp.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); 
     btOK = new JButton("AC Milan"); 
     btCancel = new JButton("Real Madrid"); 
     final JLabel lbl1 = new JLabel("Result: " + cnt1 + "X" + cnt2); 
     final JLabel lbl2 = new JLabel("Last Scorer: " + scr); 
     final JLabel lbl3 = new JLabel("Winner: " + wnr); 
     cp.add(btOK); 
     cp.add(btCancel); 
     cp.add(lbl1); 
     cp.add(lbl2); 
     cp.add(lbl3); 
     fr1.add(cp, BorderLayout.CENTER); 
     cp.setLayout(new BoxLayout(lbl1, BoxLayout.LINE_AXIS)); 
     //lbl1.setText(displayText); 

     btOK.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
      cnt1++; 
      lbl1.setText("Result: " + cnt1 + "X" + cnt2); 
      lbl2.setText("Last Scorer: AC Milan"); 

      if(cnt1>cnt2){ 
       lbl3.setText("Winner: AC Milan"); 
       } 
      else if(cnt1<cnt2){ 
       lbl3.setText("Winner: Real Madrid"); 
       } 
      else if(cnt1 == cnt2){ 
       lbl3.setText("Winner: Draw"); 
       } 
      } 
     }); 

     btCancel.addActionListener(new ActionListener(){ 
      public void actionPerformed(ActionEvent ae) { 
      cnt2++; 
      lbl1.setText("Result: " + cnt1 + "X" + cnt2); 
      lbl2.setText("Last Scorer: Real Madrid"); 
      if(cnt1>cnt2){ 
       lbl3.setText("Winner: AC Milan"); 
       } 
      else if(cnt1<cnt2){ 
       lbl3.setText("Winner: Real Madrid"); 
       } 
      else if(cnt1 == cnt2){ 
       lbl3.setText("Winner: Draw"); 
       } 

      } 
     }); 
     fr1.show(); 
     } 
    } 
+0

この質問はレイアウトに関するものではなく、あなたのパーソナルデバッガとして:1)コンテナcpを初期化します。 2)fr1.show(); == fr1.setVisible(true); – mKorbel

+1

'cp = fr1.getContentPane();' vs 'fr1.add(cp、BorderLayout.CENTER);'誰が勝つのですか? :) –

+1

"* ..それは左に残っています。" *コンパイルされないので、どのようにどこに配置することができないのか分かりません。もっと早く助けを求めるには、[SSCCE](http://pscode.org/sscce.html)を投稿してください。 –

答えて

2
GridLayout grid = new GridLayout(5, 0); 
cp.setLayout(grid); 

... 

grid.addComponent(btOK, 0, 0); 
grid.setComponentAlignment(btOK, Alignment.MIDDLE_CENTER); 

... 
0

MigLayoutをチェックしてください - これは、ワンストップ近代的なレイアウトマネージャです。あなたは決して他のレイアウトマネージャを振り返ることはありません。 SwingのUIを作るのに時間を節約できました。

関連する問題