用Applet写的菜单程序 machine

类别:Java 点击:0 评论:0 推荐:
: 前几天在java.sun.com上看见一个用Applet写的菜单程序。由于Applet目前不支持Menu(
据我所知),: 也许这个程序对你有些帮助。
原来的程序好像不完整,无法编译,我特地到java.sun.com上又载了一个,
source如下:
/*
Copyright: Sun Microsystems 1997. All rights reserved.
Author: Patrick Chan (www.xeo.com) 7/19/96
Version: 1.1
*/

import java.applet.*;
import java.awt.*;
import java.util.*;
import java.net.*;

public class XeoMenu extends Applet {
// The background image. This had better not be null.
Image image;

// These two fields are used to do double-buffering.
// The dimensions of bbuf is exactly the dimensions of the applet.
Image bbuf;
Graphics bbufG;

// This field is set to true only when the background image has
// completely loaded.
boolean imageDone;

/* Menu data */
Rectangle[] hitArea;
Rectangle[] srcRect;
Point[] dstPt;
boolean[] down;
String[] url;

/* Submenu data */
String[][] itemUrl;
String[][] item;

// If >= 0, this fields holds the index of the current menu.
// If -1, no menu is current.
int curMenu;

// If >= 0, this fields holds the index of the current menu item.
// If -1, no menu item is current.
int curMenuItem;

// This is an array of rectangles - one rectangle for each menu item.
// Each rectangle specifies the
// location (relative to the left-corner of the applet) of a menu item.
//
// menuItemRect is null when curMenu is -1.
// It becomes non-null when curMenu >= 0.
//
// Note: it would have been better programming to define classes for
// the menu and menu items. However, I decided for this little applet
// to keep the number of class files to a minimum to minimize the download
// time.
Rectangle[] menuItemRect;

// This is the color to paint "behind" the image.
Color bgColor;

// [0] is the text color of a menu item; [1] is the text color of a highlig
hted // menu item.
Color fgMenuColor[] = new Color[2];

// This is the background of a menu item; [1] is the background color of a
// highlighted menu item.
Color bgMenuColor[] = new Color[2];

// marginH is the number of pixels on the left and right edges of the menu.
// marginV is the number of pixels on the top and bottom edges of the menu.
int marginH, marginV;

// This is the font used to display the menu item labels.
Font f;

// This is the font metrics of 'f'.
FontMetrics fm;

public void init() {
int[] ints;


// Grab applet parameters.
image = getImage(getCodeBase(), getParameter("image"));
marginH = Integer.parseInt(getParameter("marginh"));
marginV = Integer.parseInt(getParameter("marginv"));

// Get color parameters.
ints = parseInt(getParameter("bg-color"), " ");
bgColor = new Color(ints[0], ints[1], ints[2]);
ints = parseInt(getParameter("fg-menu-color"), " ");
fgMenuColor[0] = new Color(ints[0], ints[1], ints[2]);
ints = parseInt(getParameter("fg-hi-menu-color"), " ");
fgMenuColor[1] = new Color(ints[0], ints[1], ints[2]);
ints = parseInt(getParameter("bg-menu-color"), " ");
bgMenuColor[0] = new Color(ints[0], ints[1], ints[2]);
ints = parseInt(getParameter("bg-hi-menu-color"), " ");
bgMenuColor[1] = new Color(ints[0], ints[1], ints[2]);

// Create back buffer for double-buffering.
bbuf = createImage(size().width, size().height);
bbufG = bbuf.getGraphics();

// Determine the font from the font-height.
int fh = Integer.parseInt(getParameter("font-height"));
int i = fh;
while (i > 10) {
f = new Font(getParameter("font"), Font.PLAIN, i);
fm = getFontMetrics(f);
if (fm.getHeight() <= fh) {
break;
}
i--;
}

// Get the menu parameters.
for (i=0; ; i++) {
if (getParameter("menu"+i) == null) {
hitArea = new Rectangle[i];
srcRect = new Rectangle[i];
dstPt = new Point[i];
url = new String[i];
down = new boolean[i];
itemUrl = new String[i][];
item = new String[i][];


break;
}
}

for (i=0; i

本文地址:http://com.8s8s.com/it/it18921.htm