101 lines
2.5 KiB
Java
101 lines
2.5 KiB
Java
Walking Text
|
|
|
|
import java.applet.*;
|
|
import java.awt.*;
|
|
|
|
public class WalkingText extends Applet implements Runnable {
|
|
protected String mesg = null;
|
|
protected int xloc, yloc, width, height, textWidth, textHeight;
|
|
protected Thread t;
|
|
protected boolean done = false;
|
|
/** How long to nap for each move */
|
|
protected int napTime = 150;
|
|
|
|
/** Applet Initializer */
|
|
public void init() {
|
|
xloc = 0;
|
|
width = getSize().width;
|
|
height = getSize().height;
|
|
|
|
if ((mesg = getParameter("text")) == null)
|
|
mesg = "Hello World of Java";
|
|
|
|
String pSize = getParameter("fontsize");
|
|
if (pSize == null)
|
|
pSize = "12";
|
|
|
|
String fontName = getParameter("fontName");
|
|
if (fontName == null)
|
|
fontName = "Helvetica";
|
|
|
|
// System.out.println("Font is " + pSize + " point " + fontName);
|
|
Font f = new Font(fontName, Font.PLAIN, Integer.parseInt(pSize));
|
|
setFont(f);
|
|
|
|
FontMetrics fm = getToolkit().getFontMetrics(f);
|
|
textWidth = fm.stringWidth(mesg);
|
|
textHeight = fm.getHeight();
|
|
// System.out.println("TextWidth " + textWidth + ", ht " + textHeight);
|
|
|
|
// use textHeight in y coordinate calculation
|
|
yloc = height - ((height-textHeight) / 2);
|
|
}
|
|
|
|
/** This is important: we create a thread, so we must kill it */
|
|
public void stop() {
|
|
done = true;
|
|
t = null;
|
|
}
|
|
|
|
/** create the thread and start it. */
|
|
public void start() {
|
|
if (t == null)
|
|
t = new Thread(this);
|
|
done = false;
|
|
t.start();
|
|
}
|
|
|
|
// Usage:
|
|
public String[][] getParameterInfo() {
|
|
String[][] params = {
|
|
{ "text", "text", "Text to walk across the screen" },
|
|
{ "fontName", "text", "Name of font to display in" },
|
|
{ "fontsize", "int", "How big to make the text" },
|
|
};
|
|
|
|
return params;
|
|
}
|
|
|
|
|
|
/** Run is called by the Thread class when there is work to do */
|
|
public void run() {
|
|
while (!done) {
|
|
if ((xloc+=5) > getSize().width)
|
|
xloc = 0;
|
|
repaint();
|
|
try {
|
|
Thread.sleep(napTime);
|
|
} catch (Exception e) {
|
|
System.out.println("Who dares to interrupt my Sleep()? " + e);
|
|
};
|
|
}
|
|
}
|
|
|
|
/** Paint is called by Applet to redraw the screen */
|
|
public void paint(Graphics g) {
|
|
g.drawString(mesg, xloc, yloc);
|
|
// if ((xloc + textWidth) > getSize().width) {
|
|
// int negLoc = textWidth-(width-xloc);
|
|
// System.out.println("xloc, textWidth, negLoc: " + xloc + "," +
|
|
// textWidth + ", " + negLoc);
|
|
// g.drawString(mesg, negLoc, yloc);
|
|
// }
|
|
}
|
|
}
|
|
/*
|
|
<APPLET CODE="WalkingText" WIDTH=500 HEIGHT=70>
|
|
<PARAM NAME=FontName Value="Helvetica">
|
|
<PARAM NAME=FontSize Value="24">
|
|
</APPLET>
|
|
*/
|