| 5個の文字列が各方向からスクロールする。 repaint(long tm)メソッドを使い,0.1秒間隔で移動さす。 |
import java.applet.*;
import java.awt.*;
public class ja202 extends Applet
{
int wh,ht; //Appletの幅と高さ
ja202makie msg1,msg2,msg3,msg4,msg5; //ja202makieクラスのインスタンス
public void init(){
Dimension d = size(); //Appletの幅と高さを取得
wh = d.width;
ht = d.height;
setBackground(Color.yellow); //Appletの背景色を黄色に設定
msg1 = new ja202makie(180,0,0,2,wh,ht,"Kodayanだ!",Color.red);
msg2 = new ja202makie(0,0,4,2,wh,ht,"ようこそ!",Color.darkGray);
msg3 = new ja202makie(0,150,8,-3,wh,ht,"HomePageへ",Color.blue);
msg4 = new ja202makie(450,0,-8,5,wh,ht,"WELCOME!",Color.magenta);
msg5 = new ja202makie(450,150,-15,-8,wh,ht,"ナイス日本橋",Color.black);
//5個のインスタンス(スクロールする文字列)を生成し,各引数を指定
}
public void paint(Graphics g){
msg1.paint(g); //ja202makieのpaint()を呼び出し描画
msg2.paint(g);
msg3.paint(g);
msg4.paint(g);
msg5.paint(g);
repaint(100); //0.1秒間隔で再描画する
}
}
class ja202makie //スクロール文字列のクラス定義
{
int width,height; //appletの幅と高さ
int xdef,ydef; //スクロール開始座標xyの初期値
int xmove,ymove; //xy方向への移動量
int xpos,ypos; //移動時のxy座標
String msg; //スクロールさせる文字列
Color cl; //文字列の色
Font f = new Font("TimesRoman",Font.BOLD,20); //フォントを設定
public ja202makie(int x,int y,int xm,int ym,int w,int h,String s,Color c){
xdef = x; //コンストラクタで各要素を取得する
ydef = y;
xmove = xm;
ymove = ym;
width = w;
height = h;
msg = s;
cl = c;
xpos = xdef;
ypos = ydef;
}
void paint(Graphics g){
g.setColor(cl);
g.setFont(f);
g.drawString(msg,xpos,ypos);
xpos += xmove;
ypos += ymove;
FontMetrics fm = g.getFontMetrics(f);
int msgw = fm.stringWidth(msg);
int msgh = fm.getHeight();
if(xmove < 0 && xpos < -msgw)xpos = xdef;
//左移動で文字列が左端から消えた場合,初期位置に戻す
if(xmove > 0 && xpos > width)xpos = xdef;
//右移動で文字列が右端から消えた場合,初期位置に戻す
if(ymove < 0 && ypos < 0)ypos = ydef;
//上移動で文字列が上端から消えた場合,初期位置に戻す
if(ymove > 0 && ypos > height + msgh)ypos = ydef;
//下移動で文字列が下端から消えた場合,初期位置に戻す
}
}
末尾