|
用Applet写的菜单程序 machine(5) curMenuItem = curMenu = -1; repaint(); return true; }
public boolean mouseEnter(Event evt, int x, int y) { return mouseMove(evt, x, y); }
public boolean mouseDown(Event evt, int x, int y) { try { String u = null;
if (curMenuItem >= 0 && itemUrl[curMenu].length > 0) { u = itemUrl[curMenu][curMenuItem]; } else if (curMenu >= 0) { u = url[curMenu]; } if (u != null) { URL url = new URL (getDocumentBase(), u);
if (getParameter("target") != null) { getAppletContext().showDocument(url, getParameter("target") ); } else { getAppletContext().showDocument(url); } } } catch (Exception e) { e.printStackTrace(); } return true; }
public boolean mouseMove(Event evt, int x, int y) { if (curMenu >= 0) { int sm = inMenu(menuItemRect, x, y);
if (curMenuItem != sm) { curMenuItem = sm; repaint(); } if (sm >= 0) { return true; } curMenu = -1; }
int m = inMenu(hitArea, x, y); if (m != curMenu) { curMenu = m;
// A new menu is now active so compute menuItemRect. if (m >= 0) { // Minimum width int maxWidth = 50; int maxHeight = 0;
menuItemRect = new Rectangle[item[curMenu].length]; for (int i=0; i String[] line = parse(item[curMenu][i], "^");
for (int j=0; j int w = fm.stringWidth(line[j]); if (w > maxWidth) { maxWidth = w; } }
menuItemRect[i] = new Rectangle(); menuItemRect[i].height = parse(item[curMenu][i], "^").length * fm.getHeight() + 2 * marginV; maxHeight += menuItemRect[i].height; }
// Determine domain of submenus
// Add one extra pixel for the left edge. maxWidth += 2 * marginH + 1; if (down[m]) { y = Math.max(0, Math.min(size().height-maxHeight-1, dstPt[curMenu].y + srcRect[curMenu].height-1));
|