next up previous contents
Next: この文書について... Up: JAVA入門 Previous: アプレット   目次

GUIアプリケーション

GUIを使ったプログラミング

最近のアプリケーションはユーザが「グラフィカル・ユーザ・インターフェイス」(GUI)を利用して、操作順序を管理するものが多くなっています.そこで、この章では、GUIを使ったプログラミングについて学んでいきます.

ここでは、初めに「GUI」をつくり、マウスの「クリック」「ドラッグ」や「キーの操作」「ウィンドウの開閉」などのイベントが操作を要求するのを待つアプリケーションを作成します.「ボタン」「メニュー」などの部品は、イベントというオブジェクトを発生します.このイベントの発生源を「イベント・ソース」といいます.

イベントを処理するオブジェクトを割り当てるプロセスを「委託」(delegate)といい、そのオブジェクトを「リスナ」(listener)といいます.オブジェクト指向の基本原理は、「ある作業にもっとも適したオブジェクトがその作業を担当する」なので、このイベント処理はリスナに「委託」されます.

JavaのGUI

JavaのGUIには「アプレットGUI」と「アプリケーションGUI」とがあります.この章では、アプリケーションGUIについて学びます. GUIの部品では「AWT(Abstract Windows Tools)」と「SWING」がよく用いられ、これらはユーザ・インターフェイスを作成したり、グラフィックスや画像を描くのに用いられます.

AWTはC/C++のようなネイティブ・コードを使っていますが、SWINGはすべてJavaで書かれた移植可能なGUIで、Javaの基本クラス(JFC)の構成要素になっています.AWTと比較すると、SWINGは必要なシステム・リソースが少なく軽い部品なので、ここでは主としてSWING部品を使います.

GUIアプリケーション

GUIアプリケーションは「JFrame」のサブクラスによってGUIを作ります.インタープリタには他のアプリケーションと同じようにjava.exeを用います. アプリケーションはJFrameのサブクラスのインスタンスによって、ウィンドウを作り、サブクラスのコンストラクタでウィンドウを初期化し、ウィンドウのタイトルを表示して、「setSize()」メソッドでウィンドウの大きさを指定します.用いるメソッドと部品が多くて分からなくなることがあるので、ここでは、必要最低限のことを紹介します.

まず、引数を”Hello world”とし、楕円の中にHello worldと表示するアプリケーションを考えます.

1.まず、楕円と文字列を書く必要があります.図形の描画にはpaint()メソッドを用いることができます.paintメソッドはJPanelのメソッドですので、Hello1を第1クラスとして、「JPanel」を継承(extend)し、paint()メソッドによってJPanelに楕円と文字を書くことができます.paint()メソッドは、図形を描画して、その外観を作り上げるためのメソッドです.paintメソッドの引数では、描画の対象となるオブジェクトが渡されます.それは、Graphicsクラスのインスタンスです.このインスタンスは描画領域、色、フォントなど描画に関するさまざまな情報を管理しています.例えば、次のようなものがあります.

Graphicsクラスのインスタンス
g.setColor(Color.pink) ピンク色に指定.他にも色には
  cyan,blue,black,white,gray,green,orange,red,yellowなどがある.
g.fillOval(0,0,199,99)   楕円を塗りつぶす.(0,0)は起点、199はx軸、99はy軸の値を表す
  ただし、(0,0)は左上隅である.他にもぬりつぶしには
  g.fillRect(長方形の塗りつぶし)
  g.fillArc(円弧の塗りつぶし)などがある.
Font f = new Font(“Dialog”,Font.PLAIN,18) "Dialog"は論理フォント名.他にも
g.setFont(f) Serif,DialogInput,Monospaced,Symbolなどがある.
  Font.PLAINはフォントの形式.他にもITALIC,BOLDなどがある.
  g.setFont(f)でこのあとに続くフォントにはこの設定が生かされる.
g.drawString(Hello.str,70,50) Hello.strはクラスHelloの引数が入る.
  (70,50)は文字列の開始点を表す.
  他にもg.drawLine(2つの座標点間の直線)
  g.drawArc(左上の起点、横、縦、始角、弧角による円弧)
  g.drawOval(左上の起点、横、縦による楕円)
  g.drawRect(左上の起点、横、縦による長方形)などがある

2.次に、どこに表示するかを考えます.部品のレイアウトと貼り付けは、中間コンテナの「ContentPane」を経由して行います.Hello2を第2クラスとして、「JFrame」を継承し、第1クラスのオブジェクトを中間クラス「ContentPane」に「add()」メソッドを使って貼り付けます.次のような画面のレイアウトを行います.

setTitle("Hello world");  //タイトル
setSize(250,150);  //画面の大きさの設定
Container c = getContentPane();  //入れ物の用意
c.add(new Hello1());  //1で描画したものを貼り付ける

3.表示したい文字列を読み取り、表示します.Helloをメインクラスとして、パラメターをコマンド・ラインから受け取り第2クラスのオブジェクトを作り、「show()」メソッドによってウィンドウに表示し、「WindowListener」によってイベントを処理を行います.

show();  
addWindowListener(new WindowAdapter()  
public void windowClosing(WindowEvent e)  
System.exit(0);  

例題 13.1   Fileクラス
コマンドライン引数を"Hello world"とし、楕円の中にHello worldと表示するプログラムを作成しなさい. .


next up previous contents
Next: この文書について... Up: JAVA入門 Previous: アプレット   目次
administrator 平成17年4月12日