// JAVA applet sample 'DrawTextTicker.java' for kitaro C3Lab JAVA lab
// copyright (c) by kitaro 1996
// このプログラムはテキストを表示するアプレットサンプルです
// バックグラウンド処理対応にしました
// バックグラウンド処理のためパラメータが2つ増えました
// wx : エリアサイズX座標
// wy : エリアサイズY座標
import java.applet.*;
import java.awt.*;
public class DrawTextTicker extends java.applet.Applet implements Runnable {
String str,font,temp;
int x,y,size;
Color color,bgcolor;
Font f;
//
Thread thread;
int timer,count;
//
Color color2;
int textLength;
FontMetrics fm;
// background job
Graphics og;
Image oimage;
int wx,wy;
//
public void init(){
str = getParameter("str"); if(str ==null)str ="HelloWorld";
font = getParameter("font"); if(font==null)font="Ariel";
temp = getParameter("wx"); if(temp==null)temp="200"; wx = Integer.valueOf( temp ).intValue();
temp = getParameter("wy"); if(temp==null)temp="200"; wy = Integer.valueOf( temp ).intValue();
temp = getParameter("size"); if(temp==null)temp="24"; size = Integer.valueOf( temp ).intValue();
temp = getParameter("x"); if(temp==null)temp="15"; x = Integer.valueOf( temp ).intValue();
temp = getParameter("y"); if(temp==null)y=size; else y = Integer.valueOf( temp ).intValue();
f = new Font(font,Font.BOLD,size);
setFont( f );
temp = getParameter("color"); if(temp==null)temp="FFFFFF";
color = new Color(
Integer.valueOf(temp.substring(0,2),16).intValue(),
Integer.valueOf(temp.substring(2,4),16).intValue(),
Integer.valueOf(temp.substring(4 ),16).intValue());
setForeground(color);
temp = getParameter("bgcolor"); if(temp==null)temp="000000";
bgcolor = new Color(
Integer.valueOf(temp.substring(0,2),16).intValue(),
Integer.valueOf(temp.substring(2,4),16).intValue(),
Integer.valueOf(temp.substring(4 ),16).intValue());
setBackground(bgcolor);
//-----------------------------------------------------------
temp = getParameter("timer"); if(temp==null)temp="1000"; timer = Integer.valueOf( temp ).intValue();
temp = getParameter("color2"); if(temp==null)temp="7f7f7f";
color2 = new Color(
Integer.valueOf(temp.substring(0,2),16).intValue(),
Integer.valueOf(temp.substring(2,4),16).intValue(),
Integer.valueOf(temp.substring(4 ),16).intValue());
fm = getFontMetrics(f);
count = 0;
textLength = str.length();
// offscreen
oimage = createImage(wx,wy);
og = oimage.getGraphics();
og.setColor(getBackground());
og.fillRect(0,0,wx,wy );
og.setColor(getForeground());
og.setFont(f);
}
public void start(){
thread = new Thread(this);
thread.start();
}
public void run (){
while(true)
{
try{ thread.sleep(timer);}
catch(Exception e){
}
off_update();
repaint();
count++;
if( count >= textLength) count=0;
}
}
public void off_clear(){
og.setColor(bgcolor);
og.fillRect(0,0,wx,wy );
og.setColor(color);
}
public void off_update(){
int t1,t2;
String s1,s2,s3;
s1 = str.substring(0,count);
s2 = str.substring(count,count+1);
s3 = str.substring(count+1);
t1 = fm.stringWidth(s1);
t2 = fm.stringWidth(s2);
off_clear();
og.setColor(color);
og.drawString(s1,x,y);
og.setColor(color2);
og.drawString(s2,x+t1,y);
og.setColor(color);
og.drawString(s3,x+t1+t2,y);
}
public void paint(Graphics g){
g.drawImage(oimage,0,0,bgcolor,this);
}
public void update(Graphics g){
paint(g);
}
}
サンプルHTML
<html>
<head>
<title>DrawTextTicker</title>
</head>
<body>
<hr>
<applet code=DrawTextTicker width=200 height=200>
<param name=str value=さんぷる>
<param name=timer value=100>
<param name=color value=808080>
<param name=color2 value=ffff80>
</applet>
</body>
</html>
<hr>