Java Appletの解説
<4.文字の表示(その1)>
スクロールする文字表示について、解説します。
実際の表示は簡単なものなので省略します。「文字表示の例」に、
色々バリエーションをつけた例がありますので,それを見て下さい。
「右から左に流れる文字」は,もう少し変化させた形で「2.パターン」にあります。
なお,ページの戻るを使うと「文字表示の例」に戻りますので,プラウザの戻るを使って下さい。
1.右から左に流れる文字
1.<HTML文>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
<HTML>
<HEAD>
<TITLE>moji1.applet</TITLE>
</HEAD>
<BODY>
<APPLET CODE=”moji1.class” WIDTH=300 HEIGTH=60>
<PARAM NAME=”MESSAGE” VALUE="いらっしゃいませ">
</APPLET>
</BODY>
</HTML>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
moji1.classのAppletに”いらっしゃいませ”というデータを送ります。
2.<Javaファイル>
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
import java.applet.Applet;
import java.awt.*;
public class moji1 extends Applet implements Runnable{
Thread th=null;
Graphics g;
String msg;
public void init(){
g=getGraphics();
setBackground(new Color(0,0,0));
msg=" "+getParameter("MESSAGE")+" ";
}
public void start(){
if (th==null){
th=new Thread(this);
th.start();
}}
public void run(){
int t;
while (true){ for (t=-50;t<600;t=t+2){
g.setFont(new Font("Courier",Font.BOLD,30));
g.setColor(new Color(255,255,255));
g.drawString(msg,300-t,55);
try{th.sleep(20);}
catch (InterruptedException e){}
g.clearRect(0,0,300,60);
}}}
public void stop(){
if(th!=null){
th.stop();
th=null;
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
3.<解説>
普通,プログラムの解説本は簡単なことから説明します。ここでは,いきなり難しい事からの説明になります。
1.public class moji1 extends Applet implements Runnable{
プログラムもボタンを押すと何かが表示されるというように何か動作することによりプログラムが動くものと,スクロールのように自動的に動くものがあります。
スレッドとは,簡単に言うと「プログラムが自動的に動くもの」と考えればよいと思います。
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
public class moji1 extends Applet implements Runnable{
Thread th=null;
public void start(){
if (th==null){
th=new Thread(this);
th.start();
}}
public void run(){
ここに実行する内容を書く
}
public void stop(){
if(th!=null){
th.stop();
th=null;
}}}
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
こむずかしい事は分かりませんので、これでワンセットと思って下さい。スレッド型のプログラムを書くときは,これら総て書いて下さい。
後は,実行するプログラムをpublic void run(){ }のなかに書けばいいのです。
2.Thread th=null;Graphics g;String msg;
変数の定義です。一番初めに定義すれば,クラスの中で共通のものとなります。public void ***{ }かっこの中でで意義すれば,その中だけで有効です。
String msg;(Stringをクラス,msgをオブジェクトと言います)こう宣言するとmsgをStringクラスにあるメソッドで処理できます。Stringクラスは文字列を扱うクラスです。
Graphics g; Graphicsクラスは,画面に線,絵,文字などの表示に関するものです。
3.public void init(){
初期化と考えればいいと思います。プログラムを開始する前に,色々な条件を決めます。
g=getGraphics();これは,グラフィックオブジェクトの取得。Graphics g;g=getGraphics();これで,Graphicsクラスのメソッドが使えます。
setBackground(new Color(0,0,0));バツクグランドの色をColor(0,0,0)にします。Color(赤,緑,青)数値は0から255までです。
数字が大きくなれば濃くなります。これは黒を意味します。
msg=" "+getParameter("MESSAGE")+" ";
getParameter("MESSAGE")は,HTML文のMESSAGEというNAMEの所のVALUEの値となります。この場合は「いらっしゃいませ」というデータが入ります。
前後の””は空白です。msgは(空白 いらっしゃいませ 空白)というデータが入ることになります。
4.public void start(){およびpublic void stop(){
これに関しては,スレッド型の場合は,必ずいれてください。
メソッドがよばれる順序は下の順序です。
1)initメソッド
Aplletを読み込んだ時,実行される。
2)startメソッド
Appletの実行開始の時,実行される。
3)paintメソッド
Applet開始時,1度よばれる。
4)runメソッド
スレッド実行中に動く。
5)stopメソッド
Apllet終了時に,実行される。
5.public void run(){
1.while (true){ }
( )の中の式の条件が満たされる間,{ }の中を実行します。この例の場合、無限に続きます。
2.for (t=-50;t<600;t=t+2){
これは,Java Script でもありましたので,わかると思います。
t=t+4とすれば,移動スピードがまします。
3.g.setFont(new Font("Courier",Font.BOLD,30));
文字のタイプ,大きさを指定します。
4.g.setColor(new Color(255,255,255));
文字の色を指定します。これは,白です。
5.g.drawString(msg,300-t,55);
書く文字と場所を指定します。msgの中の文字をx=300-t,y=55の場所に書きます。
tは-50から599まで2づつ増加して増えます。文字が表示されるのは,300×60の大きさです。
xがだんだん減少しますので,文字は右側に移動してきます。tを−50から始めたのは,初めに文字を少しずつ出したいからです。
xは初め350です。画面の大きさはxが300ですから,はみ出た所に表示されます。要するに何も表示されません。xが270ぐらいになれば1字ぐらいは表示されます。
xがマイナスになると初めの文字が隠れます。xは−299ぐらいになります。表示する文字の数,大きさにより異なりますが,この場合は10字ぐらいまでは消えると思います。
X軸 0 300
| |
いらっしゃいませ
こうなると「しゃいませ」ぐらいしか表示されません。
6.try{th.sleep(20);} catch (InterruptedException e){}
try{A} catch (例外クラス){B}
Aが実行されたときに発生する例外に,例外処理と一致するBが実行される。
プログラムでは,予想できないエラーが発生する事があります。それに対して例外処理を書いておけば,安全に処理できます。
th.sleep(20);
実行中のスレッドを20ミリ秒だけ停止する。
7.g.clearRect(0,0,300,60);
支点(0,0) 幅300 高さ60の四角形領域をバックグランドの色で塗りつぶす。
表示している文字が消えることを意味します。th.sleep(20);がありますので,文字を表示して20ミリ秒で文字が消え。新しい文字を表示する。これを繰り返します。
4.<バリエーション>
1.for (t=-50;t<600;t=t+2){
tの初期値や終了条件を色々変えれば,何も表示されない空白の時間などができます。
t=t+2は増加分を変えることで,スピードを調節できます。
2.g.setFont(new Font("Courier",Font.BOLD,30));
30の数字のところを変数にすれば,文字の大きさが変わります。
3.g.setColor(new Color(255,255,255));
255の数字の所を変数にすれば,文字の色がかわります。
4.g.drawString(msg,300-t,55);
X軸の300−tを別な数式にすれば,違った動きをします。
Y軸の55を数式にすればY軸方向でも動きます。
これらを適当にいじくって作ったのが,Java Appletのゲームにある「文字の表示」です。
娯楽室の各部屋