プログラミング言語2

社会人学習講座
「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