📄 lnavbar.java
字号:
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
public class LNavBar extends Applet {
Image offScreenImage = null;
Graphics offScreen = null;
Rectangle buttonRect[] = null;
Dimension d;
String fontName = null,
temp = null,
buttonName[] = null,
buttonLink[] = null;
Color txtColor = null,
btnColor = null,
viewColor = null,
mouseColor = null,
allColor = null,
backColor = null;
int Buttons = 0,
whichButton = 0,
mouseButton = 0,
distance = 0,
buttonWidth = 0,
fontSize = 0;
public LNavBar()
{
whichButton = -1;
mouseButton = -1;
distance = 6;
}
private Color parseColorString(String s, Color c)
{
try
{
return new Color(Integer.parseInt(s, 16));
}
catch(NumberFormatException _ex)
{
return c;
}
}
public void init()
{
d = getSize();
Buttons = (temp = getParameter("Count")) == null ?
0 : Integer.parseInt(temp);
fontSize = (temp = getParameter("FontSize")) == null ?
14 : Integer.parseInt(temp);
whichButton = (temp = getParameter("ViewButton")) == null ?
-1 : Integer.parseInt(temp);
txtColor = parseColorString(getParameter("TxtColor"),
Color.white);
btnColor = parseColorString(getParameter("BtnColor"),
Color.gray);
mouseColor = parseColorString(getParameter("MouseColor"),
Color.red);
viewColor = parseColorString(getParameter("ViewColor"),
Color.blue);
allColor = parseColorString(getParameter("AllColor"),
Color.darkGray);
backColor = parseColorString(getParameter("BackColor"),
Color.white);
fontName = getParameter("FontName");
buttonWidth = d.width / Buttons -
(distance + distance / Buttons);
buttonName = new String[Buttons];
buttonLink = new String[Buttons];
buttonRect = new Rectangle[Buttons];
for (int i = 0; i < Buttons; i++)
{
buttonName[i] = getParameter("BtnName"+(i+1));
buttonLink[i] = getParameter("BtnLink"+(i+1));
buttonRect[i] = new Rectangle(
i*(buttonWidth+distance)+distance,
0, buttonWidth, d.height);
}
try
{
offScreenImage = createImage(d.width, d.height);
offScreen = offScreenImage.getGraphics();
}
catch(Exception _ex)
{
offScreen = null;
}
repaint();
}
public void paintApplet(Graphics g)
{
g.setColor(backColor);
g.fillRect(0, 0, d.width, d.height);
for(int i = 0; i < Buttons; i++)
{
g.setColor(btnColor);
if(i == whichButton)
g.setColor(viewColor);
if(i == mouseButton)
g.setColor(mouseColor);
if(i == mouseButton && i == whichButton)
g.setColor(allColor);
g.fillRect(buttonRect[i].x, buttonRect[i].y,
buttonRect[i].width, buttonRect[i].height);
}
g.setColor(txtColor);
if(fontName == null)
fontName = g.getFont().getFamily();
Font font = new Font(fontName, 1, fontSize);
g.setFont(font);
FontMetrics fontmetrics = g.getFontMetrics(font);
int i1 = ((d.height - fontmetrics.getAscent()) / 2
+ fontmetrics.getAscent()) - 1;
for(int j = 0; j < Buttons; j++)
{
int k = fontmetrics.stringWidth(buttonName[j]);
int l = (buttonWidth - k) / 2;
g.drawString(buttonName[j], l + buttonRect[j].x, i1);
}
}
public synchronized void update(Graphics g)
{
if(offScreen != null)
{
paintApplet(offScreen);
g.drawImage(offScreenImage, 0, 0, this);
return;
}
else
{
paintApplet(g);
return;
}
}
public int findButton(int i, int j)
{
for(int k = 0; k < Buttons; k++)
if(buttonRect[k].contains(i, j))
return k;
return -1;
}
void LinkPage(String s)
{
URL url = null;
try
{
url = new URL(getDocumentBase(), s);
}
catch(MalformedURLException _ex)
{
System.out.println("Bad URL address: " + s);
}
getAppletContext().showDocument(url, "_self");
}
public boolean handleEvent(Event event)
{
if(event.target == this)
{
switch(event.id)
{
case 501: case 503: case 504:
if((mouseButton = findButton(event.x, event.y)) != -1)
{
showStatus(buttonName[mouseButton] + " -> " + buttonLink[mouseButton]);
repaint();
if(event.id == 501 && mouseButton != whichButton)
LinkPage(buttonLink[mouseButton]);
}
return true;
case 505:
mouseButton = -1;
showStatus("");
return true;
default:
return super.handleEvent(event);
}
}
else
{
return super.handleEvent(event);
}
}
public void paint(Graphics g)
{
paintApplet(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -