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