类java.awt.AWTEvent源码实例Demo

下面列出了怎么用java.awt.AWTEvent的API类实例代码及写法,或者点击链接到github查看源代码。

protected void start() {
	if (RapidMiner.getExecutionMode().isHeadless()) {
		return;
	}

	long eventMask = AWTEvent.MOUSE_EVENT_MASK + AWTEvent.KEY_EVENT_MASK;
	Toolkit.getDefaultToolkit().addAWTEventListener(e -> {
		if (e.getID() == KeyEvent.KEY_RELEASED) {
			if (((KeyEvent) e).getComponent() != null) {
				lastUserActionTime = System.currentTimeMillis();
			}
		} else if (e.getID() == MouseEvent.MOUSE_RELEASED) {
			final MouseEvent me = (MouseEvent) e;
			Component component = me.getComponent();
			logAction(component);
		}
	}, eventMask);

	RapidMinerGUI.getMainFrame().getDockingDesktop().addDockableStateChangeListener(e ->
			log(TYPE_DOCKABLE, e.getNewState().getDockable().getDockKey().getKey(),
					e.getNewState().getLocation().toString())
	);
}
 
源代码2 项目: netbeans   文件: CompletionLayoutPopup.java
@Override
public void eventDispatched(AWTEvent aWTEvent) {
    if (aWTEvent instanceof MouseEvent) {
        MouseEvent mv = (MouseEvent) aWTEvent;
        if (mv.getID() == MouseEvent.MOUSE_CLICKED && mv.getClickCount() > 0) {
            //#118828
            if (!(aWTEvent.getSource() instanceof Component)) {
                hide();
                return;
            }

            Component comp = (Component) aWTEvent.getSource();
            Container par1 = SwingUtilities.getAncestorNamed(POPUP_NAME, comp); //NOI18N
            if (par1 == null) {
                hide();
            }
        }
    }
}
 
源代码3 项目: jdk8u-dev-jdk   文件: InputMethodContext.java
public void dispatchEvent(AWTEvent event) {
    // some host input method adapters may dispatch input method events
    // through the Java event queue. If the component that the event is
    // intended for isn't an active client, or if we're using below-the-spot
    // input, we need to dispatch this event
    // to the input window. Note that that component is not necessarily the
    // current client component, since we may have switched clients while
    // the event was in the queue.
    if (event instanceof InputMethodEvent) {
        if (((Component) event.getSource()).getInputMethodRequests() == null
                || (useBelowTheSpotInput() && !dispatchingCommittedText)) {
            getCompositionAreaHandler(true).processInputMethodEvent((InputMethodEvent) event);
        }
    } else {
        // make sure we don't dispatch our own key events back to the input method
        if (!dispatchingCommittedText) {
            super.dispatchEvent(event);
        }
    }
}
 
源代码4 项目: jdk8u-dev-jdk   文件: DitherTest.java
@Override
protected void processEvent(AWTEvent evt) {
    int id = evt.getID();
    if (id != KeyEvent.KEY_TYPED) {
        super.processEvent(evt);
        return;
    }

    KeyEvent kevt = (KeyEvent) evt;
    char c = kevt.getKeyChar();

    // Digits, backspace, and delete are okay
    // Note that the minus sign is not allowed (neither is decimal)
    if (Character.isDigit(c) || (c == '\b') || (c == '\u007f')) {
        super.processEvent(evt);
        return;
    }

    Toolkit.getDefaultToolkit().beep();
    kevt.consume();
}
 
源代码5 项目: dragonwell8_jdk   文件: SwingUtilities3.java
@SuppressWarnings("unchecked")
public EventQueueDelegateFromMap(Map<String, Map<String, Object>> objectMap) {
    Map<String, Object> methodMap = objectMap.get("afterDispatch");
    afterDispatchEventArgument = (AWTEvent[]) methodMap.get("event");
    afterDispatchHandleArgument = (Object[]) methodMap.get("handle");
    afterDispatchCallable = (Callable<Void>) methodMap.get("method");

    methodMap = objectMap.get("beforeDispatch");
    beforeDispatchEventArgument = (AWTEvent[]) methodMap.get("event");
    beforeDispatchCallable = (Callable<Object>) methodMap.get("method");

    methodMap = objectMap.get("getNextEvent");
    getNextEventEventQueueArgument =
        (EventQueue[]) methodMap.get("eventQueue");
    getNextEventCallable = (Callable<AWTEvent>) methodMap.get("method");
}
 
源代码6 项目: stendhal   文件: DragLayer.java
@Override
public void eventDispatched(AWTEvent e) {
	if (e instanceof MouseEvent) {
		MouseEvent event = (MouseEvent) e;

		MouseEvent converted = SwingUtilities.convertMouseEvent(event.getComponent(), event, this);
		point = converted.getPoint();

		if (e.getID() == MouseEvent.MOUSE_DRAGGED) {
			underlyingComponent = null;
			requestDraw();
		} else if ((event.getID() == MouseEvent.MOUSE_RELEASED) && (dragged != null)) {
			underlyingComponent = null;
			stopDrag(event);
			requestDraw();
			point = null;
		}
		// We are interested only in DnD, so we can ignore any other events
	}
}
 
源代码7 项目: netbeans   文件: PopupUtil.java
public void eventDispatched(java.awt.AWTEvent aWTEvent) {
    if (aWTEvent instanceof MouseEvent) {
        MouseEvent mv = (MouseEvent)aWTEvent;
        if (mv.getID() == MouseEvent.MOUSE_CLICKED && mv.getClickCount() > 0) {
            //#118828
            if (! (aWTEvent.getSource() instanceof Component)) {
                hidePopup();
                return;
            }
            
            Component comp = (Component)aWTEvent.getSource();
            Container par = SwingUtilities.getAncestorNamed(POPUP_NAME, comp); //NOI18N
            // Container barpar = SwingUtilities.getAncestorOfClass(PopupUtil.class, comp);
            // if (par == null && barpar == null) {
            if ( par == null ) {
                hidePopup();
            }
        }
    }
}
 
源代码8 项目: rapidminer-studio   文件: PanningManager.java
@Override
public void eventDispatched(AWTEvent e) {
	if (e instanceof MouseEvent) {
		MouseEvent me = (MouseEvent) e;
		if (!SwingUtilities.isDescendingFrom(me.getComponent(), target)) {
			return;
		}
		if (me.getID() == MouseEvent.MOUSE_RELEASED) {
			// stop when mouse released
			mouseOnScreenPoint = null;
			if (timer.isRunning()) {
				timer.stop();
			}
		} else if (me.getID() == MouseEvent.MOUSE_DRAGGED && me.getComponent() == target) {
			mouseOnScreenPoint = me.getLocationOnScreen();
		} else if (me.getID() == MouseEvent.MOUSE_PRESSED && me.getComponent() == target) {
			mouseOnScreenPoint = me.getLocationOnScreen();
			timer.start();
		}
	}
}
 
源代码9 项目: javamelody   文件: MainFrame.java
private void initActivityMonitor() {
	lastActivity = System.currentTimeMillis();
	final AWTEventListener awtEventListener = new AWTEventListener() {
		/** {@inheritDoc} */
		@Override
		public void eventDispatched(AWTEvent event) {
			lastActivity = System.currentTimeMillis();
		}
	};
	Toolkit.getDefaultToolkit().addAWTEventListener(awtEventListener,
			AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK
					| AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.MOUSE_WHEEL_EVENT_MASK);
	final Timer activityMonitorTimer = new Timer("ActivityMonitorTimer", true);
	final TimerTask timerTask = new TimerTask() {
		/** {@inheritDoc} */
		@Override
		public void run() {
			if (System.currentTimeMillis() - lastActivity > INACTIVITY_DELAY * 60L * 1000) {
				exit(1);
			}
		}
	};
	// on vérifie l'activité utilisateur toutes les 60 secondes par rapport au délai maximum d'inactivité
	activityMonitorTimer.schedule(timerTask, 60L * 1000, 60L * 1000);
}
 
源代码10 项目: xdm   文件: XDMFrame.java
private synchronized void startModal(Component comp) {
	try {
		if (SwingUtilities.isEventDispatchThread()) {
			EventQueue theQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
			while (comp.isVisible()) {
				AWTEvent event = theQueue.getNextEvent();
				Object source = event.getSource();
				if (event instanceof ActiveEvent) {
					((ActiveEvent) event).dispatch();
				} else if (source instanceof Component) {
					((Component) source).dispatchEvent(event);
				} else if (source instanceof MenuComponent) {
					((MenuComponent) source).dispatchEvent(event);
				} else {
					System.err.println("Unable to dispatch: " + event);
				}
			}
		} else {
			while (comp.isVisible()) {
				wait();
			}
		}
	} catch (InterruptedException ignored) {
	}
}
 
源代码11 项目: openjdk-jdk8u-backup   文件: DitherTest.java
@Override
protected void processEvent(AWTEvent evt) {
    int id = evt.getID();
    if (id != KeyEvent.KEY_TYPED) {
        super.processEvent(evt);
        return;
    }

    KeyEvent kevt = (KeyEvent) evt;
    char c = kevt.getKeyChar();

    // Digits, backspace, and delete are okay
    // Note that the minus sign is not allowed (neither is decimal)
    if (Character.isDigit(c) || (c == '\b') || (c == '\u007f')) {
        super.processEvent(evt);
        return;
    }

    Toolkit.getDefaultToolkit().beep();
    kevt.consume();
}
 
源代码12 项目: TencentKona-8   文件: InputMethodContext.java
public void dispatchEvent(AWTEvent event) {
    // some host input method adapters may dispatch input method events
    // through the Java event queue. If the component that the event is
    // intended for isn't an active client, or if we're using below-the-spot
    // input, we need to dispatch this event
    // to the input window. Note that that component is not necessarily the
    // current client component, since we may have switched clients while
    // the event was in the queue.
    if (event instanceof InputMethodEvent) {
        if (((Component) event.getSource()).getInputMethodRequests() == null
                || (useBelowTheSpotInput() && !dispatchingCommittedText)) {
            getCompositionAreaHandler(true).processInputMethodEvent((InputMethodEvent) event);
        }
    } else {
        // make sure we don't dispatch our own key events back to the input method
        if (!dispatchingCommittedText) {
            super.dispatchEvent(event);
        }
    }
}
 
源代码13 项目: pumpernickel   文件: ClickSensitivityControl.java
@Override
public void eventDispatched(AWTEvent e) {
	MouseEvent m = (MouseEvent) e;
	if (m.getID() == MouseEvent.MOUSE_CLICKED) {
		mouseClicked(m);
	} else if (m.getID() == MouseEvent.MOUSE_DRAGGED) {
		mouseDragged(m);
	} else if (m.getID() == MouseEvent.MOUSE_ENTERED) {
		mouseEntered(m);
	} else if (m.getID() == MouseEvent.MOUSE_EXITED) {
		mouseExited(m);
	} else if (m.getID() == MouseEvent.MOUSE_MOVED) {
		mouseMoved(m);
	} else if (m.getID() == MouseEvent.MOUSE_PRESSED) {
		mousePressed(m);
	} else if (m.getID() == MouseEvent.MOUSE_RELEASED) {
		mouseReleased(m);
	}
}
 
源代码14 项目: nextreports-designer   文件: EditorScrollPane.java
/**
 * Creates a scroll pane with preferred size (width, height).
 *
 * @param width The preferred width of <code>area</code>.
 * @param height The preferred height of <code>area</code>.
 * @param area The text area this scroll pane will contain.
 * @param lineNumbersEnabled Whether line numbers are initially enabled.
 * @param lineNumberColor The color to use for line numbers.
 */
public EditorScrollPane(int width, int height, JEditorPane area,
        boolean lineNumbersEnabled, Color lineNumberColor) {
       super(area);
       setPreferredSize(new Dimension(width, height));

	// Create the text area and set it inside this scrollbar area.
	editorPane = area;

	// Create the line number list for this document.
	enableEvents(AWTEvent.MOUSE_EVENT_MASK);
	lineNumberBorder = new LineNumberBorder(this, editorPane, lineNumberColor);
	lineNumberBorder.setFont(getDefaultFont());
	setLineNumbersEnabled(lineNumbersEnabled);

	// Set miscellaneous properties.
	setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
}
 
源代码15 项目: hottub   文件: JFileChooser.java
/**
 * Notifies all listeners that have registered interest for
 * notification on this event type. The event instance
 * is lazily created using the <code>command</code> parameter.
 *
 * @see EventListenerList
 */
protected void fireActionPerformed(String command) {
    // Guaranteed to return a non-null array
    Object[] listeners = listenerList.getListenerList();
    long mostRecentEventTime = EventQueue.getMostRecentEventTime();
    int modifiers = 0;
    AWTEvent currentEvent = EventQueue.getCurrentEvent();
    if (currentEvent instanceof InputEvent) {
        modifiers = ((InputEvent)currentEvent).getModifiers();
    } else if (currentEvent instanceof ActionEvent) {
        modifiers = ((ActionEvent)currentEvent).getModifiers();
    }
    ActionEvent e = null;
    // Process the listeners last to first, notifying
    // those that are interested in this event
    for (int i = listeners.length-2; i>=0; i-=2) {
        if (listeners[i]==ActionListener.class) {
            // Lazily create the event:
            if (e == null) {
                e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
                                    command, mostRecentEventTime,
                                    modifiers);
            }
            ((ActionListener)listeners[i+1]).actionPerformed(e);
        }
    }
}
 
源代码16 项目: Bytecoder   文件: BasicPopupMenuUI.java
void grabWindow(MenuElement[] newPath) {
    // A grab needs to be added
    final Toolkit tk = Toolkit.getDefaultToolkit();
    java.security.AccessController.doPrivileged(
        new java.security.PrivilegedAction<Object>() {
            public Object run() {
                tk.addAWTEventListener(MouseGrabber.this,
                        AWTEvent.MOUSE_EVENT_MASK |
                        AWTEvent.MOUSE_MOTION_EVENT_MASK |
                        AWTEvent.MOUSE_WHEEL_EVENT_MASK |
                        AWTEvent.WINDOW_EVENT_MASK | sun.awt.SunToolkit.GRAB_EVENT_MASK);
                return null;
            }
        }
    );

    Component invoker = newPath[0].getComponent();
    if (invoker instanceof JPopupMenu) {
        invoker = ((JPopupMenu)invoker).getInvoker();
    }
    grabbedWindow = (invoker == null)
            ? null
            : ((invoker instanceof Window)
                    ? (Window) invoker
                    : SwingUtilities.getWindowAncestor(invoker));
    if(grabbedWindow != null) {
        if(tk instanceof sun.awt.SunToolkit) {
            ((sun.awt.SunToolkit)tk).grab(grabbedWindow);
        } else {
            grabbedWindow.addComponentListener(this);
            grabbedWindow.addWindowListener(this);
        }
    }
}
 
源代码17 项目: jdk8u60   文件: JFileChooser.java
/**
 * Performs common constructor initialization and setup.
 */
protected void setup(FileSystemView view) {
    installShowFilesListener();
    installHierarchyListener();

    if(view == null) {
        view = FileSystemView.getFileSystemView();
    }
    setFileSystemView(view);
    updateUI();
    if(isAcceptAllFileFilterUsed()) {
        setFileFilter(getAcceptAllFileFilter());
    }
    enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}
 
源代码18 项目: PyramidShader   文件: GlassPane.java
/**
 * Receives all key events in the AWT and processes the ones that originated
 * from the current window with the glass pane.
 * 
 * @param event
 *            the AWTEvent that was fired
 */
public void eventDispatched(AWTEvent event) {
	Object source = event.getSource();
	if (event instanceof KeyEvent
			&& source instanceof Component) {
		/*
		 * If the event originated from the window w/glass pane,
		 * consume the event.
		 */
		if ((SwingUtilities.windowForComponent((Component) source) == _window)) {
			((KeyEvent) event).consume();
		}
	}
}
 
源代码19 项目: openjdk-jdk8u   文件: KeyCharTest.java
@Override
public void eventDispatched(AWTEvent event) {
    eventsCount++;
    char delete = ((KeyEvent) event).getKeyChar();
    if (delete != '\u007f') {
        throw new RuntimeException("Key char is not delete: '" + delete + "'");
    }
}
 
源代码20 项目: openjdk-jdk9   文件: QueueTool.java
/**
 * Shortcuts event if
 * {@code ((JemmyProperties.getCurrentDispatchingModel() & JemmyProperties.SHORTCUT_MODEL_MASK) != 0)}
 * and if executed in the dispatch thread. Otherwise posts event.
 *
 * @param event Event to dispatch.
 */
public static void processEvent(AWTEvent event) {
    if ((JemmyProperties.getCurrentDispatchingModel()
            & JemmyProperties.SHORTCUT_MODEL_MASK) != 0) {
        installQueue();
    }
    if ((JemmyProperties.getCurrentDispatchingModel()
            & JemmyProperties.SHORTCUT_MODEL_MASK) != 0
            && isDispatchThread()) {
        shortcutEvent(event);
    } else {
        postEvent(event);
    }
}
 
public void init() {
    robot = Util.createRobot();
    kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
    Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
        public void eventDispatched(AWTEvent event) {
            System.out.println("--> " + event);
        }
    }, FocusEvent.FOCUS_EVENT_MASK | WindowEvent.WINDOW_FOCUS_EVENT_MASK);
}
 
源代码22 项目: netbeans   文件: TopComponentDragSupport.java
@Override
public void eventDispatched(AWTEvent event) {
    KeyEvent keyevent = (KeyEvent)event;
    
    if ((keyevent.getID() == KeyEvent.KEY_PRESSED || keyevent.getID() == KeyEvent.KEY_RELEASED)
            && keyevent.getKeyCode() == KeyEvent.VK_ESCAPE) {
        hackESC = true;
    }                
}
 
源代码23 项目: beast-mcmc   文件: GlassPane.java
/**
 * Receives all key events in the AWT and processes the ones that originated
 * from the current window with the glass pane.
 * 
 * @param event
 *            the AWTEvent that was fired
 */
public void eventDispatched(AWTEvent event) {
	Object source = event.getSource();
	if (event instanceof KeyEvent
			&& source instanceof Component) {
		/*
		 * If the event originated from the window w/glass pane,
		 * consume the event.
		 */
		if ((SwingUtilities.windowForComponent((Component) source) == _window)) {
			((KeyEvent) event).consume();
		}
	}
}
 
源代码24 项目: openjdk-jdk8u-backup   文件: CompositionArea.java
CompositionArea() {
    // create composition window with localized title
    String windowTitle = Toolkit.getProperty("AWT.CompositionWindowTitle", "Input Window");
    compositionWindow =
        (JFrame)InputMethodContext.createInputMethodWindow(windowTitle, null, true);

    setOpaque(true);
    setBorder(LineBorder.createGrayLineBorder());
    setForeground(Color.black);
    setBackground(Color.white);

    // if we get the focus, we still want to let the client's
    // input context handle the event
    enableInputMethods(true);
    enableEvents(AWTEvent.KEY_EVENT_MASK);

    compositionWindow.getContentPane().add(this);
    compositionWindow.addWindowListener(new FrameWindowAdapter());
    addInputMethodListener(this);
    compositionWindow.enableInputMethods(false);
    compositionWindow.pack();
    Dimension windowSize = compositionWindow.getSize();
    Dimension screenSize = (getToolkit()).getScreenSize();
    compositionWindow.setLocation(screenSize.width - windowSize.width-20,
                                screenSize.height - windowSize.height-100);
    compositionWindow.setVisible(false);
}
 
源代码25 项目: openjdk-8   文件: XComponentPeer.java
void handleJavaFocusEvent(AWTEvent e) {
    if (focusLog.isLoggable(PlatformLogger.Level.FINER)) {
        focusLog.finer(e.toString());
    }
    if (e.getID() == FocusEvent.FOCUS_GAINED) {
        focusGained((FocusEvent)e);
    } else {
        focusLost((FocusEvent)e);
    }
}
 
源代码26 项目: marathonv5   文件: JListXTest.java
@BeforeMethod
public void showDialog() throws Throwable {
    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
                @Override
                public void eventDispatched(AWTEvent event) {
                }
            }, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
            frame = new JFrame("My Dialog");
            frame.setName("dialog-1");
            Object[] listData = new Object[30];
            for (int i = 1; i <= listData.length; i++) {
                if (i == 25) {
                    listData[i - 1] = "List Item - '" + i + "'";
                } else {
                    listData[i - 1] = "List Item - " + i;
                }
            }
            list = new JList(listData);
            list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
            list.setName("list-1");
            list.setDragEnabled(true);
            JPanel p = new JPanel(new BorderLayout());
            p.add(new JScrollPane(list), BorderLayout.NORTH);
            textfield = new JTextField(80);
            textfield.setName("text-field");
            textfield.setDropMode(DropMode.USE_SELECTION);
            p.add(textfield, BorderLayout.SOUTH);
            frame.getContentPane().add(p);
            frame.pack();
            frame.setAlwaysOnTop(true);
            frame.setVisible(true);
            list.requestFocusInWindow();
        }
    });
}
 
源代码27 项目: netbeans   文件: TooltipWindow.java
private void onClick(AWTEvent event) {
    Component component = (Component) event.getSource();
    if (outsideOfTooltipWindow(component)) {
        // hide the tooltip if event occurs outside of the tooltip
        shutdown();
    }
}
 
源代码28 项目: openjdk-jdk8u   文件: XComponentPeer.java
final static AWTEvent wrapInSequenced(AWTEvent event) {
    try {
        if (seClass == null) {
            seClass = Class.forName("java.awt.SequencedEvent");
        }

        if (seCtor == null) {
            seCtor = (Constructor) AccessController.doPrivileged(new PrivilegedExceptionAction() {
                    public Object run() throws Exception {
                        Constructor ctor = seClass.getConstructor(new Class[] { AWTEvent.class });
                        ctor.setAccessible(true);
                        return ctor;
                    }
                });
        }

        return (AWTEvent) seCtor.newInstance(new Object[] { event });
    }
    catch (ClassNotFoundException e) {
        throw new NoClassDefFoundError("java.awt.SequencedEvent.");
    }
    catch (PrivilegedActionException ex) {
        throw new NoClassDefFoundError("java.awt.SequencedEvent.");
    }
    catch (InstantiationException e) {
        assert false;
    }
    catch (IllegalAccessException e) {
        assert false;
    }
    catch (InvocationTargetException e) {
        assert false;
    }

    return null;
}
 
/**
 * Called when a dialog widget has been modified: recomputes option values
 * from dialog content.
 */
public boolean dialogItemChanged(GenericDialog gd, AWTEvent evt)
{
	// set up current parameters
	operation = Operation.fromLabel(gd.getNextChoice());
	connectivity = Conn2D.fromLabel(gd.getNextChoice());

	return true;
}
 
源代码30 项目: netbeans   文件: NbClipboard.java
NbClipboard( Clipboard systemClipboard ) {
    super("NBClipboard");   // NOI18N
    this.systemClipboard = systemClipboard;

    result = Lookup.getDefault().lookupResult(ExClipboard.Convertor.class);
    result.addLookupListener(this);

    systemClipboard.addFlavorListener(this);

    resultChanged(null);

    if (System.getProperty("netbeans.slow.system.clipboard.hack") != null) {
        slowSystemClipboard = Boolean.getBoolean("netbeans.slow.system.clipboard.hack"); // NOI18N
    } else if (Utilities.isMac()) {
        slowSystemClipboard = false;
    }
    else {
        slowSystemClipboard = true;
    }




    if (System.getProperty("sun.awt.datatransfer.timeout") == null) { // NOI18N
        System.setProperty("sun.awt.datatransfer.timeout", "1000"); // NOI18N
    }
    if (slowSystemClipboard) {
        Toolkit.getDefaultToolkit().addAWTEventListener(
            this, AWTEvent.WINDOW_EVENT_MASK);
    }
}
 
 类所在包
 同包方法