社会人学習講座 「Javaプログラミング概論」 第02回 後半 (2008年09月13日) 1 今日の教材 http://flute.u-shizuoka-ken.ac.jp/~sokubo/class/java08/ にあります。 上記URLは、ご自宅でもアクセス可能です。 分量が沢山ありますが、全部やらなくて大丈夫です。 課題らしい課題もありません。 ソースを見て、分からないところ等ありましたら、お呼び 下さい。 2/33 今日の内容 先週の復習とJavaの基本的な部分 前回の復習1(コンパイルと実行) 前回の復習2(クラスとは) static なメソッド 前回の復習3 (クラスの継承) abstract クラス・インターフェース Javaで書くGUI JavaアプレットとSwing 3/33 Javaアプレット 4/33 Javaとアプレット Javaのプログラム 単独で動作するプログラム web browser上で動作するプログラム(applet) appletの作り方 1. appletのためのJavaプログラムを書く 2. コンパイルする 3. appletを埋め込むhtmlファイルを書く 4. web browserでhtmlを読み込み、appletを実行する 5/33 実行例 (1/4) 1. appletの為のJavaプログラムを書く import java.applet.Applet; import java.awt.Graphics; public class JavaApplet01 extends Applet{ public void paint(Graphics g){ g.drawString("Hello World",30,40); } } appletの場合、mainを含むクラスは必要ありません。 java.applet と java.awt というパッケージを利用して います。 ファイル名はJavaApplet01.javaです。 6/33 実行例 (2/4) 2. コンパイルする javac JavaApplet01.java コンソールで、何時も通りにコンパイルします。 JavaApplet01.class ができます。 7/33 実行例 (3/4) 3. appletを埋め込むhtmlファイルを書く <applet code="JavaApplet01.class" width=250 height=250> </applet> codeでclassファイル名を指定 widthとheightでbrowser上に表示するときのサイ ズを指定 テキストエディタで書いて下さい。 拡張子は html もしくは htm としましょう。 拡張子以外は自由につけてくだい。今回の例では Sample10.htmとしました。 8/33 実行例 (4/4) 4. web browserでhtmlを読み込み、appletを実行する 普通に、Sample10.htm を web browser で開きます。 場合によっては、セキュリティーが云々と言うかも 知れませんが、適時、処置して下さい。 今回の例では、 座標(30,40)あたりに Hello World という 文字列が表示されます。 9/33 appletの書き方 java.applet と java.awt というパッケージを利用します。 Applet というクラスを拡張したクラスを作成することに なります。 main というクラスは必要ありません。 その代わり、ある特定のメソッドを書くと、ある順番 通りに実行されていきます。 必要なメソッドだけを記述します。 10/33 標準メソッド init()メソッド 初期化が必要な時に書く。 最初に1回だけ実行される。 start()メソッド init()メソッドの次に実行される。 また、実行が再開されたときに も実行される。 アプレットの実行が中断したと き実行される。 再線画を行うときに試用する。 upate()メソッド 画面線画等の具体的な記述を 行う。 repaint()メソッド stop()メソッド paint()メソッド repaint()が実行されたときに実 行される。 destroy()メソッド アプレットが終了するときに実 行される。 11/33 標準メソッド 起動 意図的な 再線画 init() repaint() start() paint() update() 中断 再開 stop() destroy() 終了 12/33 GUIとSwing 13/33 Javaとアプレット Javaには、GUIを作るのに便利なクラスファイルやイン ターフェイスが準備されています。 GUIに使用されるボタンやダイアログは、すべてインス タンス(オブジェクト)として扱われます。 AWTとSwingがあります。 AWTは、Javaに古くからあるものです。 あまり効率よく動いてはくれません。 SwingはAWTの欠点とかを改善するべく作られたも のです。 今回はSwingをやります 14/33 基本的な流れ たとえば、ボタンの 次のような手順を踏みます。 インスタンスを宣言。 1. 適切なインターフェースを実装する この時点では、まだ 画面に出ません! 2. 適切なインスタンスを宣言する これで画面に出ます 3. インスタンスを登録する 4. インスタンスに何らかのアクションが行われたときに、 ある動作を行いたいなら 1. Javaがそのアクションを関知するようにする (リスナ登録する) 2. そのアクションが行われたときに、何をするか を記述する 15/33 サンプルプログラム1 import java.applet.Applet; import java.awt.*; import java.awt.event.*; /* */ <applet code="Sample11a.class" width=200 height=400> </applet> public class Sample11a extends Applet{ Label lb1 = new Label("Sample11a"); String ss; } インスタンスを生成 インスタンスを登録 public void init(){ add(lb1); lb1.setText("Test"); メソッドは、普通に、 ss = lb1.getText(); インスタンス名.メソッド名 add(lb1); } で使用。 16/33 サンプルプログラム2 [1/2] import java.applet.Applet; import java.awt.*; import java.awt.event.*; /* */ <applet code="Sample11b.class" width=200 height=400></applet> インターフェイス ActionListener を実装 public class Sample11b extends Applet implements ActionListener{ Button bt1 = new Button("Button 1"); Button bt2 = new Button("Button 2"); Label lb1 = new Label("Sample11b"); インスタンスを生成 public void init(){ bt1.addActionListener(this); ボタンが押されたことを bt2.addActionListener(this); 検知するようにする add(bt1); add(bt2); インスタンスを登録 add(lb1); } 17/33 サンプルプログラム2 [2/2] } public void actionPerformed(ActionEvent e){ if(e.getSource() == bt1){ lb1.setText("Bottun 01"); }else if(e.getSource() == bt2){ lb1.setText("Bottun 02"); } } どのボタンが 押されたかで 条件分岐 ボタンが押されたときに行 うことを書く 18/33
© Copyright 2024 ExpyDoc