5個のスクロール文字列


5個の文字列が各方向からスクロールする。
repaint(long tm)メソッドを使い,0.1秒間隔で移動さす。
Java Appletで5このマーキー

ソースコード

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;
			//下移動で文字列が下端から消えた場合,初期位置に戻す
  }
}

末尾