Javaデモ/Swing「JFrameスケルトン・テンプレート」(8)

import java.awt.EventQueue;

import java.awt.Container;

import javax.swing.JFrame;


public class J005 extends JFrame {

  static String sAppTitle = "Java Application";

  static J005 oAppFrame;

  Container content;


  /**

   * Launch the application.

   */

  public static void main(String[] args) {

    // 以前はイベントもメイン・スレッドでしたが、

    // イベントはイベント・ディスパッチ・スレッドに分離されたために、

    // GUIコンポーネントの設定もイベント・ディスパッチ・スレッドで設定しなければならなくなったので、

    // メイン・スレッドでのGUIコンポーネントの設定はNGになりました、

    // 下記のように「EventQueue.invokeLater()」でイベント・ディスパッチ・スレッドに登録しなければなりません。

    EventQueue.invokeLater(new Runnable() {

      public void run() {

        try {

          oAppFrame = new J005();

          oAppFrame.setVisible(true);

        } catch (Exception ex) {

          ex.printStackTrace();

        }

      }

    });

  }


  /**

   * Create the frame.

   */

  public J005() {

    // 閉じるボタンをクリックされた場合の動作を設定

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    setTitle(sAppTitle);

    setLocation(50, 50);


    // ContentPaneの実態はJFrameにビルトインされているデフォルト・パネル。

    content = getContentPane();

    content.setSize(350, 350);


    // 「JFrame#setSize(~)」でフレーム・サイズを設定すると、

    // タイトルも含むウインドウ全体のサイズになります。

    // つまり、ウインドウ内の表示領域の縦がタイトルのサイズ分 少なくなります。

    // 「JFrame#getContentPane().setPreferredSize(~)」で設定し、

    // 「pack()」すれば、ContentPaneで設定された全表示領域が表示されます。

    content.setPreferredSize(content.getSize());

    pack();


    // content.setLayout(null);

  }

}


コメント

このブログの人気の投稿