下面列出了怎么用javax.swing.plaf.basic.BasicMenuItemUI的API类实例代码及写法,或者点击链接到github查看源代码。
public static void paintDisabledText(final BasicMenuItemUI originalUI,
final Graphics g,
final JMenuItem menuItem,
final Rectangle textRect,
final String text) {
final FontMetrics fm = SwingUtilities2.getFontMetrics(menuItem, g);
final int index = menuItem.getDisplayedMnemonicIndex();
final Color fg = getForeground(originalUI, menuItem);
final Color shadow = UIUtil.shade(menuItem.getBackground(), 1.24, 0.5);
g.setColor(shadow);
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g, text, index, textRect.x + 1, textRect.y + fm.getAscent() + 1);
g.setColor(fg);
SwingUtilities2.drawStringUnderlineCharAt(menuItem, g, text, index, textRect.x, textRect.y + fm.getAscent());
}
private static Icon getCheckIconFromContext(final BasicMenuItemUI originalUI, final JCheckBoxMenuItem item) {
if (myCachedCheckIcon == null) {
final SynthContext context = GtkPaintingUtil.getSynthContext(originalUI, item);
myCachedCheckIcon = context.getStyle().getIcon(context, "CheckBoxMenuItem.checkIcon");
}
return myCachedCheckIcon;
}
@Override protected MouseInputListener createMouseInputListener(JComponent c) {
return new BasicMenuItemUI.MouseInputHandler() {
@Override public void mousePressed(MouseEvent e) {
JMenu menu = (JMenu) menuItem;
if (!menu.isEnabled() || SwingUtilities.isRightMouseButton(e)) {
return;
}
super.mousePressed(e);
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// if (menu.isTopLevelMenu()) {
// if (menu.isSelected() && menu.getPopupMenu().isShowing()) {
// manager.clearSelectedPath();
// } else {
// Container cnt = menu.getParent();
// if (cnt instanceof JMenuBar) {
// MenuElement[] me = new MenuElement[2];
// me[0] = (MenuElement) cnt;
// me[1] = menu;
// manager.setSelectedPath(me);
// }
// }
// }
// MenuElement[] selectedPath = manager.getSelectedPath();
// if (selectedPath.length > 0 && selectedPath[selectedPath.length - 1] != menu.getPopupMenu()) {
// if (menu.isTopLevelMenu() || menu.getDelay() == 0) {
// MenuElement[] newPath = new MenuElement[selectedPath.length + 1];
// System.arraycopy(selectedPath, 0, newPath, 0, selectedPath.length);
// newPath[selectedPath.length] = menu.getPopupMenu();
// MenuSelectionManager.defaultManager().setSelectedPath(newPath);
// } else {
// setupPostTimer(menu);
// }
// }
}
// @Override public void mouseReleased(MouseEvent e) {
// JMenu menu = (JMenu) menuItem;
// if (!menu.isEnabled()) {
// return;
// }
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// manager.processMouseEvent(e);
// if (!e.isConsumed()) {
// manager.clearSelectedPath();
// }
// }
// @Override public void mouseEntered(MouseEvent e) {
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// int modifiers = e.getModifiersEx();
// if ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// } else {
// manager.setSelectedPath(getPath());
// }
// }
// @Override public void mouseExited(MouseEvent e) {
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// int modifiers = e.getModifiersEx();
// if ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// } else {
// MenuElement[] path = manager.getSelectedPath();
// if (path.length > 1 && path[path.length - 1] == menuItem) {
// MenuElement[] newPath = new MenuElement[path.length - 1];
// System.arraycopy(path, 0, newPath, 0, path.length - 1);
// manager.setSelectedPath(newPath);
// }
// }
// }
// @Override public void mouseDragged(MouseEvent e) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// }
};
}
@Override protected MouseInputListener createMouseInputListener(JComponent c) {
return new BasicMenuItemUI.MouseInputHandler() {
@Override public void mouseReleased(MouseEvent e) {
if (!menuItem.isEnabled() || SwingUtilities.isRightMouseButton(e)) {
return;
}
super.mouseReleased(e);
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// Point p = e.getPoint();
// if (p.x >= 0 && p.x < menuItem.getWidth() && p.y >= 0 && p.y < menuItem.getHeight()) {
// doClick(manager);
// } else {
// manager.processMouseEvent(e);
// }
}
// @Override public void mouseEntered(MouseEvent e) {
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// int modifiers = e.getModifiersEx();
// if ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// } else {
// manager.setSelectedPath(getPath());
// }
// }
// @Override public void mouseExited(MouseEvent e) {
// MenuSelectionManager manager = MenuSelectionManager.defaultManager();
// int modifiers = e.getModifiersEx();
// if ((modifiers & InputEvent.BUTTON1_DOWN_MASK) != 0) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// } else {
// MenuElement[] path = manager.getSelectedPath();
// if (path.length > 1 && path[path.length - 1] == menuItem) {
// MenuElement[] newPath = new MenuElement[path.length - 1];
// System.arraycopy(path, 0, newPath, 0, path.length - 1);
// manager.setSelectedPath(newPath);
// }
// }
// }
// @Override public void mouseDragged(MouseEvent e) {
// MenuSelectionManager.defaultManager().processMouseEvent(e);
// }
};
}
public static Color getForeground(final BasicMenuItemUI ui, final JMenuItem menuItem) {
final SynthContext context = getSynthContext(ui, menuItem);
return context.getStyle().getColor(context, ColorType.TEXT_FOREGROUND);
}
public static boolean isUiAcceptable(final MenuItemUI ui) {
return ui instanceof BasicMenuItemUI && GtkPaintingUtil.isSynthUI(ui);
}