JAVAプログラミング講座 宇宙のJAVAさん

- STORY 3 -



くま先生例のごとく、宇宙のJAVAさんをはじめまーす!!

ミャンちゃんみゃん!!

うし君もー!

くま先生ここでお知らせがあります。

ミャンちゃんにゃ!?

くま先生先日、牛君の携帯電話に電話できませんでしたね・・・

うし君そのとおりだもー!

くま先生ちょっと気になったんで調べて見て、原因が分かりました。
沼の向こう側にすんでいるワニ君が、趣味でジャミング(電波妨害)をかけていた事が判明しました。

うし君迷惑な話もー!

くま先生でも、もう大丈夫です。 わんわん警察隊により、ワニ君は逮捕され、機材は押収されました。

ミャンちゃんよかったみゃ!!

くま先生謎が解けたところで、講座をはじめまーす。

うし君ミャンちゃんはーい!

 

くま先生 STORY 1 で、ボタンを押すと文字が出るアプレットの解説をしましたが、それを実際に作ってみましょう。

くま先生プログラムはこうなります。MousePrint.javaMousePrint.class ファイル名は MousePrint.java です。

うし君なるほど。 flag という関数がボタンを押すと1になるのかもー。

くま先生そうです。動作の説明は STORY 1 を見直してください。

 

    public void paint(Graphics g) { // 作画処理
        if(flag==1){
            g.setFont(new Font("TimesRoman", Font.BOLD, 30 ));
            g.setColor(Color.blue);
            g.drawString("Hello Sora!!", 100, 80);
        }
    } // paint()

くま先生上は、paint() の中身です。

g.setFont(new Font("TimesRoman", Font.BOLD, 30 ));
 これで作画ペンの文字の、フォントをTimesRoman、サイズを30に設定しています。
g.setColor(Color.blue);
 これで作画ペンの色を、青にします。
g.drawString("Hello Sora!!", 100, 80);
 座標 100, 80 に「Hello Sora!!」と作画します。

flag が1の場合は、これらの処理が実行されます。

くま先生 flag という変数は、paint()mouseDown() の2つの関数の中で使用されています。
複数の関数で使用する変数は、グローバル変数としてソースプログラムの最初に定義します。

 

くま先生次にCGを読み込んで、画面に表示するアプレットを作りましょう。
JavaBase.java を同じフォルダに名前を変えてコピーしてください
ImagePrint.java という名前にしてください。

適当なCGを soraディレクトリに持ってきてきださい。JAVA で読めるCGは、jpeggif フォーマットのみです。

ミャンちゃんコピー&ペースト・・・。 「コピー 〜 JavaBase.java」を「ImagePrint.java」に名前を変更して・・・・。できたみゃ!

くま先生質問です! 次は何をしますか??

ミャンちゃんアプレット名をファイル名と同じ「ImagePrint」に変えるにゃ!

くま先生そのとおり! 次のように変えます!

// ===============================================================

public class ImagePrint extends Applet {

くま先生CGの表示は簡単です。 CGを読んで、表示するだけです。

まず、グローバル変数で Image 変数を宣言します。Image は、CGを入れておく箱みたいなものです。 変数名は img にします。

    // グローバル変数     
   Image img;

次に、CGを読んで img に収納します。 init() でイメージを読み込むことにします。

    public void init() { // 初期処理
       img = getImage(getDocumentBase(), "image01.jpg");
    } // init()

getImage という命令は、CGを読み込む命令です。
ここでは、 image01.jpg という名前のJPEGファイルを img 変数に読み込んでます。

さて、読み込んだCGを表示します。当然 paint() です。

    public void paint(Graphics g) { // 作画処理
            g.drawImage( img, 0, 0, this);
    } // paint()

これで、座標 0,0 に img が表示されます。
drawImage という命令は、CGを表示する命令です。最後の this という引数は気にしないでください。

あとは、MS-DOSプロンプト を立ち上げて、コンパイルしてください。

> javac ImagePrint.java

 

うし君ImagePrint.class が出来たもー。 CGも用意したもー!

くま先生じゃ、動かしてみましょう。
では、sample.html を書き換えます。

<APPLET CODE="ImagePrint.class" WIDTH=640 HEIGHT=480>
</APPLET>

appletviewer で動作させてください。

> appletviewer  sample.html  ( > av  sample.html )

 

ミャンちゃんCGが表示されたにゃん!!!ImagePrint.javaImagePrint.class 

うし君できたもー!

うし君あれ! WWWブラウザでは表示できないもー!!
appletviewer ではCGが出てきたもーに!

ミャンちゃんぼくは、WWWブラウザでも問題にゃいにゃ!

くま先生牛くん、きみのブラウザは Internet Explorer 3.02 じゃないか!

うし君そうだもー!

くま先生IE3.02 は JAVA にバグがあって、ローカル(自分のHD)から、CGを読み込むアプレットが動作しないんだ!!

うし君どうするもー??

くま先生普通は appletviewer を使って動作確認するから問題ないけど、IE3.02で動作確認する場合は、自分のホームページに作ったプログラムを送って、インターネット(ネットワーク)経由で動作確認しないとだめだよ・・・・

ミャンちゃん 僕みたいに Internet Explorer 4.0 、入れたらどうにゃん???

うし君IE4.0 はどうも好きになれないモー。 ネスケ使うもー。

 

くま先生じゃ、プログラムを少し改造しましょう。
マウスをクリックするとCGが動くようにします。

まず、変数 k をグローバル変数として、追加します。

    // グローバル変数  
    Image img;
    int k;

初期値として、k に 0 を init()にて入れます。

    public void init() { // 初期処理
        k=0;
        img = getImage(getDocumentBase(), "image01.jpg");
    } // init()

画像の表示座標を ( k, k ) にします、

    public void paint(Graphics g) { // 作画処理
            g.drawImage( img, k, k, this);
    } // paint()

くま先生これで、最初 k には 0 が入っているので、( 0, 0 )にCGが表示されます。
マウスを押したとき k を5づつ増やしましょう。 ミャンちゃん、どうやるか解りますか???

ミャンちゃん マウスを押された時に動作する関数は mouseDown() みゃん!!
mouseDown() に k を増やすプログラムを追加するにゃん!!
そんでもって、k を増やした後、repaint() で画面再作画するにゃーーー。

    public boolean mouseDown(Event e, int x, int y) { // マウスダウン
        k=k+5;
        repaint();

        return true;
    } // mouseDown()

くま先生そのとおり! じゃ、プログラムをセーブして、コンパイルしてください。

うし君もーーーー、できた ImagePrint.javaImagePrint.classImagePrint.lzh 

うし君もー!! マウスをクリックするたびに、CGが右下に移動していくもーー!!

 

くま先生 さて今回はこれで終わりです。 みなさん、CGを表示できるようになりましたね!!

ミャンちゃんうし君はぁ〜い!!

くま先生 次回は、私の友人の爆裂健を特別教師としてお呼びして、彼にプログラムについて説明して頂きましょう(笑)!!
では、次回お会いしましょう!!

ミャンちゃんうし君先生、さようなら!

 

- 続く -

 


戻る