welcome: please sign in
location: "ウインドウの表示"の差分
2と21のリビジョン間の差分 (その間の編集: 19回)
2009-11-27 00:51:52時点のリビジョン2
サイズ: 74
編集者: masahiko
コメント:
2009-12-02 00:44:27時点のリビジョン21
サイズ: 3413
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 1: 行 1:
#acl All:
行 3: 行 2:

Swingを使ってウインドウを表示するプログラムを示します。

 {{{#!java
 import javax.swing.*;

 public class Sample1
 {
  public static void main(String[] args)
  {
   JFrame f;
   
   f = new JFrame();
   f.setVisible(true);
  }
 }
 }}}

1行目ではimport文でswingパッケージを利用することを示しています。

実際の処理は
9行目でJFrameクラスのインスタンスを作成し
作成したインスタンスに対し10行目でsetVisibleメソッドを行います。

 * JFrameクラスの'''インスタンスを作成'''することでウインドウが作成されます。
 * setVisible(true)メソッドは、その'''ウインドウを表示'''(見えるように)します。
行 4: 行 30:

このプログラムを実行すると、小さなウインドウが1つ表示されます。

マウス操作によりウインドウに対して次を行うことができます。
 * 最小化
 * 最大
 * ウインドウサイズの変更
 * 位置の変更

ウインドウを閉じても、プログラムは実行中のままです。

プログラムを終了するにはjavaコマンドを入力した画面でctrlを押したままでCを押します。('''Ctrl+C'''と記述)

プログラムを終了すればウインドウも消えます。
----
=== ウインドウを閉じることとプログラムの終了 ===

ウインドウを閉じたときに、プログラムを終了すべきか実行中のままとするかの選択は、
プログラムにまかせるべきです。

2つのウインドウを表示するプログラムを示します。
 {{{#!java
 import javax.swing.*;
 
 public class Sample2
 {
  public static void main(String[] args)
  {
   JFrame f, g;
   
   f = new JFrame();
   f.setVisible(true);
   f.setTitle("- f -");
   f.setSize(200, 300);
   
   g = new JFrame();
   g.setVisible(true);
   g.setTitle("- g -");
   g.setSize(300, 100);
  }
 }
 }}}
setTitleメソッドはウインドウのタイトルを文字列で指定します。

setSizeメソッドはウインドウの大きさを横、縦の数値で指定します。

 . {{attachment:swing02.png}}
2つのインスタンスがそれぞれのウインドウに対応しています。
 . {{attachment:swing03.png}}
動作をシーケンス図であらわしたものです。
 . {{attachment:swing07.png}}
mainメソッドからインスタンスが作成されたときに、新たなスレッドとして動作を始めます。

親のスレッドが終了したときは子のスレッドも終了します。

子のスレッドが終了したからといって親スレッドは終了しません。
----
特定のウインドウが閉じられたときに、プログラムを終了するようにもできます。

上記のプログラムで fのウインドウが閉じられたときにプログラムを終了するには
次の行を追加します。
 {{{
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }}}
これを追加すると
 1. fのウインドウを閉じると親スレッドが終了します。
 2. 親スレッドが終了するとgのスレッドも終了しgのウインドウも閉じます。
gのウインドウを閉じたときは終了しません。

ウインドウの表示

Swingを使ってウインドウを表示するプログラムを示します。

  •    1  import javax.swing.*;
       2 
       3  public class Sample1
       4  {
       5         public static void main(String[] args)
       6         {
       7                 JFrame f;
       8                 
       9                 f = new JFrame();
      10                 f.setVisible(true);
      11         }
      12  }
    

1行目ではimport文でswingパッケージを利用することを示しています。

実際の処理は 9行目でJFrameクラスのインスタンスを作成し 作成したインスタンスに対し10行目でsetVisibleメソッドを行います。

  • JFrameクラスのインスタンスを作成することでウインドウが作成されます。

  • setVisible(true)メソッドは、そのウインドウを表示(見えるように)します。

  • swing01.png

このプログラムを実行すると、小さなウインドウが1つ表示されます。

マウス操作によりウインドウに対して次を行うことができます。

  • 最小化
  • 最大
  • ウインドウサイズの変更
  • 位置の変更

ウインドウを閉じても、プログラムは実行中のままです。

プログラムを終了するにはjavaコマンドを入力した画面でctrlを押したままでCを押します。(Ctrl+Cと記述)

プログラムを終了すればウインドウも消えます。


ウインドウを閉じることとプログラムの終了

ウインドウを閉じたときに、プログラムを終了すべきか実行中のままとするかの選択は、 プログラムにまかせるべきです。

2つのウインドウを表示するプログラムを示します。

  •    1  import javax.swing.*;
       2  
       3  public class Sample2
       4  {
       5         public static void main(String[] args)
       6         {
       7                 JFrame f, g;
       8                 
       9                 f = new JFrame();
      10                 f.setVisible(true);
      11                 f.setTitle("- f -");
      12                 f.setSize(200, 300);
      13                 
      14                 g = new JFrame();
      15                 g.setVisible(true);
      16                 g.setTitle("- g -");
      17                 g.setSize(300, 100);
      18         }
      19  }
    

setTitleメソッドはウインドウのタイトルを文字列で指定します。

setSizeメソッドはウインドウの大きさを横、縦の数値で指定します。

  • swing02.png

2つのインスタンスがそれぞれのウインドウに対応しています。

  • swing03.png

動作をシーケンス図であらわしたものです。

  • swing07.png

mainメソッドからインスタンスが作成されたときに、新たなスレッドとして動作を始めます。

親のスレッドが終了したときは子のスレッドも終了します。

子のスレッドが終了したからといって親スレッドは終了しません。


特定のウインドウが閉じられたときに、プログラムを終了するようにもできます。

上記のプログラムで fのウインドウが閉じられたときにプログラムを終了するには 次の行を追加します。

  •  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

これを追加すると

  1. fのウインドウを閉じると親スレッドが終了します。
  2. 親スレッドが終了するとgのスレッドも終了しgのウインドウも閉じます。

gのウインドウを閉じたときは終了しません。

ウインドウの表示 (最終更新日時 2011-12-13 02:59:08 更新者 masahiko)