motifmenuui.java

来自「JAVA 所有包」· Java 代码 · 共 140 行

JAVA
140
字号
/* * @(#)MotifMenuUI.java	1.34 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.motif;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.plaf.*;import javax.swing.border.*;import javax.swing.plaf.basic.*;import javax.swing.plaf.basic.BasicMenuUI;/** * A Motif L&F implementation of MenuUI.   * <p> * * @version 1.34 11/17/05 * @author Georges Saab * @author Rich Schiavi */public class MotifMenuUI extends BasicMenuUI{    public static ComponentUI createUI( JComponent x ) {	return new MotifMenuUI();    } // These should not be necessary because BasicMenuUI does this,// and this class overrides createChangeListener.//    protected void installListeners() {//	super.installListeners();//        changeListener = createChangeListener(menuItem);//        menuItem.addChangeListener(changeListener);	//    }//    //    protected void uninstallListeners() {//	super.uninstallListeners();//	menuItem.removeChangeListener(changeListener);//    }    protected ChangeListener createChangeListener(JComponent c) {        return new MotifChangeHandler((JMenu)c, this);    }    private boolean popupIsOpen(JMenu m,MenuElement me[]) {        int i;        JPopupMenu pm = m.getPopupMenu();        for(i=me.length-1;i>=0;i--) {            if(me[i].getComponent() == pm)                return true;        }        return false;    }    protected MouseInputListener createMouseInputListener(JComponent c) {	return new MouseInputHandler();    }    public class MotifChangeHandler extends ChangeHandler {	public MotifChangeHandler(JMenu m, MotifMenuUI ui) {	    super(m, ui);	}		public void stateChanged(ChangeEvent e) {	    JMenuItem c = (JMenuItem)e.getSource();	    if (c.isArmed() || c.isSelected()) {		c.setBorderPainted(true);		// c.repaint();	    } else {		c.setBorderPainted(false);	    }	    super.stateChanged(e);	}    }    protected class MouseInputHandler implements MouseInputListener {	public void mouseClicked(MouseEvent e) {}	public void mousePressed(MouseEvent e) {	    MenuSelectionManager manager = MenuSelectionManager.defaultManager();	    JMenu menu = (JMenu)e.getComponent();            if(menu.isEnabled()) {		if(menu.isTopLevelMenu()) {		    if(menu.isSelected()) {			manager.clearSelectedPath();		    } else {			Container cnt = menu.getParent();			if(cnt != null && cnt instanceof JMenuBar) {			    MenuElement me[] = new MenuElement[2];			    me[0]=(MenuElement)cnt;			    me[1]=menu;			    manager.setSelectedPath(me);			}		    }		}				MenuElement path[] = getPath();                if (path.length > 0) {                    MenuElement newPath[] = new MenuElement[path.length+1];                    System.arraycopy(path,0,newPath,0,path.length);                    newPath[path.length] = menu.getPopupMenu();                    manager.setSelectedPath(newPath);		                }	    }	}	public void mouseReleased(MouseEvent e) {	    MenuSelectionManager manager = 		MenuSelectionManager.defaultManager();	    JMenuItem menuItem = (JMenuItem)e.getComponent();	    Point p = e.getPoint();	    if(!(p.x >= 0 && p.x < menuItem.getWidth() &&		 p.y >= 0 && p.y < menuItem.getHeight())) {		manager.processMouseEvent(e);	    }	}	public void mouseEntered(MouseEvent e) {}	public void mouseExited(MouseEvent e) {}	public void mouseDragged(MouseEvent e) {	    MenuSelectionManager.defaultManager().processMouseEvent(e);	}	public void mouseMoved(MouseEvent e) { }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?