//
// CHAPTER 6
// Applet Source Name [Skelton.java]
// 1996.2
// Author [ Junzo hagimoto ]
import java.applet.*;
import java.awt.*;
public class Skelton extends Applet implements Runnable {
Dimension d;
//
String s[]; // UPDATE
Thread kicker = null;
int xScroll;
int y_Point;
Font font;
int strHeight,strWidth;
//
int maxText; // ADD
int curTextCount=0 ; // ADD
int red,blue,green; // ADD
Color color; // ADD
public void init() {
d = size();
xScroll = d.width;
//
String param = getParameter( "maxText" ); // ADD
maxText = (param != null) ? Integer.parseInt(param) : 1; // ADD
s = new String[maxText]; // ADD
int i=0; // ADD
do{ // ADD
param = getParameter( "text"+ (i+1) ); // ADD
if(param != null ){ // ADD
s[i] = new String(param); // ADD
}else{ // ADD
if( i==0 ){ // ADD
s[i] = "Java"; // ADD
} // ADD
maxText = i+1; // ADD
} // ADD
}while( param != null && ++i != maxText ); // ADD
//
//---------------------------------------------------------------
// DEL s = getParameter("text");
// DEL if (s == null) {
// DEL s = "Java";
// DEL }
//---------------------------------------------------------------//
font = new Font("TimesRoman",Font.BOLD,20);
strHeight =(getFontMetrics(font)).getLeading() ;
strHeight -=(getFontMetrics(font)).getDescent() ;
strHeight +=(getFontMetrics(font)).getAscent() ;
y_Point =(d.height + strHeight
- (getFontMetrics(font)).getDescent()) /2;
}
public void run() {
Thread.currentThread().setPriority(Thread.NORM_PRIORITY-3);
while (kicker != null) {
repaint();
try {
Thread.sleep( 20 );
} catch (InterruptedException e) {}
}
kicker=null;
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
g.setFont( font );
g.setColor(Color.white);
g.fillRect(0, 0, d.width, d.height);
//
if(xScroll == d.width){ // ADD
red = (int)(Math.random() * 256); // ADD
blue = (int)(Math.random() * 256); // ADD
green = (int)(Math.random() * 256); // ADD
color = new Color( red, green, blue); // ADD
curTextCount++; // ADD
if(curTextCount > maxText){ // ADD
curTextCount=1; // ADD
} // ADD
strWidth =
(getFontMetrics(font)).stringWidth(s[curTextCount-1]);//UPDATE&&MOVE
} // ADD
g.setColor(color); // ADD
g.drawString(s[curTextCount-1],xScroll--,y_Point); //UPDATE
if(xScroll < -strWidth ){
xScroll = d.width;
}
}
public void start() {
if (kicker == null) {
kicker = new Thread(this);
kicker.start();
}
}
public void stop() {
if (kicker != null) {
kicker.stop();
kicker = null;
}
}
}
//