////////////////////////////////////////////////////////////////////////////////
// << s111b.java >>
//
//  Swing(1):レイアウトマネージャー(FlowLayout、フレームの自動設定)
//
//  GUI部品を表示するために、フレームサイズを最適なサイズで自動的に設定する。
//
// ●java.awt.Windowクラスのメソッド
//  public void pack()
//   機能:部品及びレイアウトに合わせて、フレームサイズを変更する。
//
////////////////////////////////////////////////////////////////////////////////

import java.awt.*;
import javax.swing.*;

class s111b extends JFrame {

  ////////////////////
  // コンストラクタ //
  ////////////////////
  s111b(String s) { 

    super(s);

    // フレームからコンテンツペインを取得。
    Container c = this.getContentPane();

    // コンテンツペインのレイアウトマネージャをFlowLatoutに設定。
    c.setLayout(new FlowLayout(FlowLayout.LEFT,40,20));

    // ボタンの作成。
    JButton b1 = new JButton("ボタン1");
    JButton b2 = new JButton("ボタン2");
    JButton b3 = new JButton("ボタン3");
    JButton b4 = new JButton("ボタン4");
    JButton b5 = new JButton("ボタン5");

    // ボタンをコンテンツペイン内に追加。
    c.add(b1);
    c.add(b2);
    c.add(b3);
    c.add(b4);
    c.add(b5);
  }

  //////////////////
  // mainメソッド //
  //////////////////
  public static void main(String[] args) {

    // フレームの作成。
    s111b f = new s111b("フレーム");

    // フレームの大きさを設定。
    f.pack();

    // 「閉じる」ボタンがクリックされたとき、プログラムを終了する。
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // フレームの表示。
    f.setVisible(true);
  }
}
実行結果
% javac s111b.java
% java s111b