== ウインドウの表示 == 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)メソッドは、その'''ウインドウを表示'''(見えるように)します。 . {{attachment:swing01.png}} このプログラムを実行すると、小さなウインドウが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のウインドウを閉じたときは終了しません。 ---- 補足 環境によっては、ウインドウのバーが見えないほど上部に表示されることがあるようです。 次を追加することで、ウインドウの表示位置を指定できます。 {{{ f.setLocation(80,50); }}} 引数は、横位置、縦位置です。