目次> 第3章> 3.3 TOPUPPREVNEXT

3.3 パネルのネスト

前節では、全てのラベルが同じ大きさでしたが、 ここでは、FlowLayout と GridLayout を組合わせて、 もう少しバランスのよい表示をしてみましょう。

プログラム MyProfile2.java

001:// 住所・氏名・所属 の表示(その2)
002:
003:import java.awt.* ;
004:import javax.swing.* ;
005:
006:public class MyProfile2 extends JFrame {
007:
008:    public MyProfile2() {
009:        super("My Profile");
010:        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
011:        Container pane = getContentPane();
012:        pane.setLayout( new GridLayout(3, 1) );
013:
014:        JPanel pan1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
015:        pan1.add( new JLabel("氏名:") );
016:        pan1.add( new JLabel("藤村 光") );
017:        pane.add( pan1 );
018:
019:        JPanel pan2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
020:        pan2.add( new JLabel("住所:") );
021:        JPanel pan3 = new JPanel();
022:        pan3.setLayout( new GridLayout(2, 1) );
023:        pan3.add( new JLabel("相模原市御園") );
024:        pan3.add( new JLabel("4丁目6−8") );
025:        pan2.add( pan3 );
026:        pane.add( pan2 );
027:
028:        JPanel pan4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
029:        pan4.add( new JLabel("所属:") );
030:        pan4.add( new JLabel("情報処理教育室") );
031:        pane.add( pan4 );
032:
033:        pack();
034:        setVisible(true);
035:        }
036:
037:  public static void main(String[] args) {
038:        new MyProfile2();
039:    }
040:}

いくつかのラベルをまとめて貼りつけるために、JPanel を使います。 中間的に JPanel に貼りつけ形を整えたものを さらに大きなパネルや、フレームに貼りつけるという方法を採用しました。

実行結果は、下図のとおりです。

実行結果

パネルのネストの状況は、下図のとおりです。

パネルのネスト

  pane   GridLayout(3, 1)
  pan1   FlowLayout(FlowLayout.LEFT)
  pan2   FlowLayout(FlowLayout.LEFT)
  pan3   GridLayout(2, 1)
  pan4   FlowLayout(FlowLayout.LEFT)
  

更新日:2006/04/04 TOPUPPREVNEXT