ウインドウの表示
Swingを使ってウインドウを表示するプログラムを示します。
1行目ではimport文でswingパッケージを利用することを示しています。
実際の処理は 9行目でJFrameクラスのインスタンスを作成し 作成したインスタンスに対し10行目でsetVisibleメソッドを行います。
JFrameクラスのインスタンスを作成することでウインドウが作成されます。
setVisible(true)メソッドは、そのウインドウを表示(見えるように)します。
このプログラムを実行すると、小さなウインドウが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メソッドはウインドウの大きさを横、縦の数値で指定します。
2つのインスタンスがそれぞれのウインドウに対応しています。
動作をシーケンス図であらわしたものです。
mainメソッドからインスタンスが作成されたときに、新たなスレッドとして動作を始めます。
親のスレッドが終了したときは子のスレッドも終了します。
子のスレッドが終了したからといって親スレッドは終了しません。
特定のウインドウが閉じられたときに、プログラムを終了するようにもできます。
上記のプログラムで fのウインドウが閉じられたときにプログラムを終了するには 次の行を追加します。
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
これを追加すると
- fのウインドウを閉じると親スレッドが終了します。
- 親スレッドが終了するとgのスレッドも終了しgのウインドウも閉じます。
gのウインドウを閉じたときは終了しません。
補足
環境によっては、ウインドウのバーが見えないほど上部に表示されることがあるようです。
次を追加することで、ウインドウの表示位置を指定できます。
f.setLocation(80,50);
引数は、横位置、縦位置です。