📄 navigatorticker.java
字号:
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.io.PrintStream;
import java.net.URL;
import java.util.*;
public class NavigatorTicker extends Applet implements Runnable {
public int messageIndex = 0,
messageCount = 0,
messageX = 0,
messageY = 0,
messageW = 0;
public Vector msgs = null,
msgsW = null,
msgsURL = null;
public Color txtColor = null,
linkColor = null,
bgColor = null;
public boolean active = false;
public String message = null;
public Font msgFont = null;
public URL url_ = null;
public Thread t = null;
public Dimension lastS = null;
Image im = null;
Graphics gr = null;
boolean display_URL = false;
int speed = 0,
mouseX = 0;
public NavigatorTicker()
{
messageCount = 1;
msgs = new Vector();
msgsW = new Vector();
msgsURL = new Vector();
active = false;
lastS = new Dimension(1, 1);
display_URL = false;
}
public Color readColor(String s, Color color)
{
if(s == null)
return color;
StringTokenizer stringtokenizer = new StringTokenizer(s, ",");
try
{
int i = Integer.valueOf(stringtokenizer.nextToken())
.intValue();
int j = Integer.valueOf(stringtokenizer.nextToken())
.intValue();
int k = Integer.valueOf(stringtokenizer.nextToken())
.intValue();
return new Color(i, j, k);
}
catch(Exception _ex)
{
return color;
}
}
public void init()
{
String s;
messageCount = (s = getParameter("count")) != null ?
Integer.valueOf(s).intValue() : 0;
for(int i = 0; i < messageCount; i++)
{
s = getParameter("msg" + i);
StringTokenizer stringtokenizer =
new StringTokenizer(s, "\\");
msgs.addElement(
new String(stringtokenizer.nextToken()));
msgsURL.addElement(
new String(stringtokenizer.nextToken()));
}
speed = (s = getParameter("speed")) != null ?
Integer.valueOf(s).intValue() : 10;
txtColor = readColor(getParameter("txtColor"), bgColor);
linkColor = readColor(getParameter("linkColor"), bgColor);
bgColor = readColor(getParameter("bgColor"),
getBackground());
return;
}
public void createParams()
{
int i = getSize().width,
j = getSize().height;
lastS.width = i;
lastS.height = j;
if(gr != null)
gr.finalize();
if(im != null)
im = null;
byte byte0 = 14;
Font font = new Font("TimesRoman", 1, byte0);
setFont(font);
FontMetrics fontmetrics = getFontMetrics(font);
int fontSize = fontmetrics.getHeight();
fontSize = (byte0 * (j - 10)) / fontSize;
msgFont = new Font("TimesRoman", 1, fontSize);
FontMetrics fontmetrics1 = getFontMetrics(msgFont);
fontSize = fontmetrics1.getHeight();
messageX = i;
messageY = ((j - fontSize) / 2) + fontmetrics1.getAscent();
for(int l = 0; l < messageCount; l++)
{
msgsW.addElement(new Integer(
fontmetrics1.stringWidth((String)msgs.elementAt(l))));
messageW += ((Integer)msgsW.lastElement()).intValue();
}
im = createImage(i, j);
gr = im.getGraphics();
}
public void paint(Graphics g)
{
update(g);
}
public synchronized void update(Graphics g)
{
if(getSize().height != lastS.height ||
getSize().width != lastS.width)
createParams();
gr.setColor(bgColor);
gr.fillRect(0, 0, lastS.width, lastS.height);
gr.drawRect(0, 0, lastS.width-1, lastS.height-1);
gr.drawRect(1, 1, lastS.width-3, lastS.height-3);
gr.setColor(bgColor);
gr.draw3DRect(2, 2, lastS.width-5, lastS.height-5, true);
gr.draw3DRect(3, 3, lastS.width-7, lastS.height-7, true);
gr.clipRect(5, 4, lastS.width-10, lastS.height-8);
if(display_URL)
{
int i = 0;
int k = mouseX;
if(k > messageX)
{
k -= messageX;
for(int i1 = 0; i1 < messageCount; i1++)
{
i += ((Integer)msgsW.elementAt(i1)).intValue();
if(k >= i)
continue;
messageIndex = i1;
break;
}
}
showStatus((String)msgsURL.elementAt(messageIndex));
}
gr.setColor(txtColor);
gr.setFont(msgFont);
int j = 0;
for(int l = 0; l < messageCount; l++)
{
if(l == messageIndex && display_URL)
gr.setColor(linkColor);
else
gr.setColor(txtColor);
gr.drawString((String)msgs.elementAt(l),
messageX + j, messageY);
j += ((Integer)msgsW.elementAt(l)).intValue();
}
g.drawImage(im, 0, 0, this);
}
public synchronized void nextPos()
{
messageX -= speed;
if(messageX + messageW < 0)
messageX = lastS.width;
repaint();
}
public void run()
{
Thread.currentThread().setPriority(1);
while(active)
{
nextPos();
try
{
Thread.sleep(100L);
}
catch(InterruptedException _ex) { }
}
}
public void start()
{
if(!active)
{
t = new Thread(this);
active = true;
t.start();
}
}
public void stop()
{
active = false;
t = null;
}
public boolean mouseEnter(Event event, int i, int j)
{
display_URL = true;
return true;
}
public boolean mouseExit(Event event, int i, int j)
{
display_URL = false;
return true;
}
public boolean mouseMove(Event event, int i, int j)
{
mouseX = i;
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -