⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 awtutilities.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    if (ret == null)      ret = new Rectangle();    ret.setBounds(base.x + insets.left, base.y + insets.top,        base.width - (insets.left + insets.right),        base.height - (insets.top + insets.bottom));    return ret;  }  /**   * Calculates the bounds of a component in the component's own coordinate   * space. The result has the same height and width as the component's   * bounds, but its location is set to (0,0).   *   * @param aComponent The component to measure   *   * @return The component's bounds in its local coordinate space   */  public static Rectangle getLocalBounds(Component aComponent)  {    Rectangle bounds = aComponent.getBounds();    return new Rectangle(0, 0, bounds.width, bounds.height);  }  /**   * Returns the font metrics object for a given font. The metrics can be   * used to calculate crude bounding boxes and positioning information,   * for laying out components with textual elements.   *   * @param font The font to get metrics for   *   * @return The font's metrics   *   * @see java.awt.font.GlyphMetrics   */  public static FontMetrics getFontMetrics(Font font)  {    return Toolkit.getDefaultToolkit().getFontMetrics(font);  }  /**   * Returns the least ancestor of <code>comp</code> which has the   * specified name.   *   * @param name The name to search for   * @param comp The component to search the ancestors of   *   * @return The nearest ancestor of <code>comp</code> with the given   * name, or <code>null</code> if no such ancestor exists   *   * @see java.awt.Component#getName   * @see #getAncestorOfClass   */  public static Container getAncestorNamed(String name, Component comp)  {    while (comp != null && (comp.getName() != name))      comp = comp.getParent();    return (Container) comp;  }  /**   * Returns the least ancestor of <code>comp</code> which is an instance   * of the specified class.   *   * @param c The class to search for   * @param comp The component to search the ancestors of   *   * @return The nearest ancestor of <code>comp</code> which is an instance   * of the given class, or <code>null</code> if no such ancestor exists   *   * @see #getAncestorOfClass   * @see #windowForComponent   * @see    *    */  public static Container getAncestorOfClass(Class c, Component comp)  {    while (comp != null && (! c.isInstance(comp)))      comp = comp.getParent();    return (Container) comp;  }  /**   * Equivalent to calling <code>getAncestorOfClass(Window, comp)</code>.   *   * @param comp The component to search for an ancestor window    *   * @return An ancestral window, or <code>null</code> if none exists   */  public static Window windowForComponent(Component comp)  {    return (Window) getAncestorOfClass(Window.class, comp);  }  /**   * Returns the "root" of the component tree containint <code>comp</code>   * The root is defined as either the <em>least</em> ancestor of   * <code>comp</code> which is a {@link Window}, or the <em>greatest</em>   * ancestor of <code>comp</code> which is a {@link Applet} if no {@link   * Window} ancestors are found.   *   * @param comp The component to search for a root   *   * @return The root of the component's tree, or <code>null</code>   */  public static Component getRoot(Component comp)  {    Applet app = null;    Window win = null;    while (comp != null)     {      if (win == null && comp instanceof Window)        win = (Window) comp;      else if (comp instanceof Applet)        app = (Applet) comp;      comp = comp.getParent();    }    if (win != null)      return win;    else      return app;  }  /**   * Return true if a descends from b, in other words if b is an   * ancestor of a.   *   * @param a The child to search the ancestry of   * @param b The potential ancestor to search for   *   * @return true if a is a descendent of b, false otherwise   */  public static boolean isDescendingFrom(Component a, Component b)  {    while (true)     {      if (a == null || b == null)        return false;      if (a == b)        return true;      a = a.getParent();    }  }  /**   * Returns the deepest descendent of parent which is both visible and   * contains the point <code>(x,y)</code>. Returns parent when either   * parent is not a container, or has no children which contain   * <code>(x,y)</code>. Returns <code>null</code> when either   * <code>(x,y)</code> is outside the bounds of parent, or parent is   * <code>null</code>.   *    * @param parent The component to search the descendents of   * @param x Horizontal coordinate to search for   * @param y Vertical coordinate to search for   *   * @return A component containing <code>(x,y)</code>, or   * <code>null</code>   *   * @see java.awt.Container#findComponentAt   */  public static Component getDeepestComponentAt(Component parent, int x, int y)  {    if (parent == null || (! parent.contains(x, y)))      return null;    if (! (parent instanceof Container))      return parent;    Container c = (Container) parent;    return c.findComponentAt(x, y);  }  /**   * Converts a point from a component's local coordinate space to "screen"   * coordinates (such as the coordinate space mouse events are delivered   * in). This operation is equivalent to translating the point by the   * location of the component (which is the origin of its coordinate   * space).   *   * @param p The point to convert   * @param c The component which the point is expressed in terms of   *   * @see convertPointFromScreen   */  public static void convertPointToScreen(Point p, Component c)  {    Point c0 = c.getLocationOnScreen();    p.translate(c0.x, c0.y);  }  /**   * Converts a point from "screen" coordinates (such as the coordinate   * space mouse events are delivered in) to a component's local coordinate   * space. This operation is equivalent to translating the point by the   * negation of the component's location (which is the origin of its   * coordinate space).   *   * @param p The point to convert   * @param c The component which the point should be expressed in terms of   */  public static void convertPointFromScreen(Point p, Component c)  {    Point c0 = c.getLocationOnScreen();    p.translate(-c0.x, -c0.y);  }  /**   * Converts a point <code>(x,y)</code> from the coordinate space of one   * component to another. This is equivalent to converting the point from   * <code>source</code> space to screen space, then back from screen space   * to <code>destination</code> space. If exactly one of the two   * Components is <code>null</code>, it is taken to refer to the root   * ancestor of the other component. If both are <code>null</code>, no   * transformation is done.   *   * @param source The component which the point is expressed in terms of   * @param x Horizontal coordinate of point to transform   * @param y Vertical coordinate of point to transform   * @param destination The component which the return value will be   * expressed in terms of   *   * @return The point <code>(x,y)</code> converted from the coordinate   *         space of the   * source component to the coordinate space of the destination component   *   * @see #convertPointToScreen   * @see #convertPointFromScreen   * @see #convertRectangle   * @see #getRoot   */  public static Point convertPoint(Component source, int x, int y,                                   Component destination)  {    Point pt = new Point(x, y);    if (source == null && destination == null)      return pt;    if (source == null)      source = getRoot(destination);    if (destination == null)      destination = getRoot(source);        if (source.isShowing() && destination.isShowing())      {        convertPointToScreen(pt, source);        convertPointFromScreen(pt, destination);      }    return pt;  }    /**   * Converts a rectangle from the coordinate space of one component to   * another. This is equivalent to converting the rectangle from   * <code>source</code> space to screen space, then back from screen space   * to <code>destination</code> space. If exactly one of the two   * Components is <code>null</code>, it is taken to refer to the root   * ancestor of the other component. If both are <code>null</code>, no   * transformation is done.   *   * @param source The component which the rectangle is expressed in terms of   * @param rect The rectangle to convert   * @param destination The component which the return value will be   * expressed in terms of   *   * @return A new rectangle, equal in size to the input rectangle, but   * with its position converted from the coordinate space of the source   * component to the coordinate space of the destination component   *   * @see #convertPointToScreen   * @see #convertPointFromScreen   * @see #convertPoint   * @see #getRoot   */  public static Rectangle convertRectangle(Component source, Rectangle rect,                                           Component destination)  {    Point pt = convertPoint(source, rect.x, rect.y, destination);    return new Rectangle(pt.x, pt.y, rect.width, rect.height);  }  /**   * Convert a mouse event which refrers to one component to another.  This   * includes changing the mouse event's coordinate space, as well as the   * source property of the event. If <code>source</code> is   * <code>null</code>, it is taken to refer to <code>destination</code>'s   * root component. If <code>destination</code> is <code>null</code>, the   * new event will remain expressed in <code>source</code>'s coordinate   * system.   *   * @param source The component the mouse event currently refers to   * @param sourceEvent The mouse event to convert   * @param destination The component the new mouse event should refer to   *   * @return A new mouse event expressed in terms of the destination   * component's coordinate space, and with the destination component as   * its source   *   * @see #convertPoint   */  public static MouseEvent convertMouseEvent(Component source,                                             MouseEvent sourceEvent,                                             Component destination)  {    Point newpt = convertPoint(source, sourceEvent.getX(), sourceEvent.getY(),                               destination);    return new MouseEvent(destination, sourceEvent.getID(),                          sourceEvent.getWhen(), sourceEvent.getModifiers(),                          newpt.x, newpt.y, sourceEvent.getClickCount(),                          sourceEvent.isPopupTrigger(),                          sourceEvent.getButton());  }  /**    * Calls {@link java.awt.EventQueue.invokeLater} with the   * specified {@link Runnable}.    */  public static void invokeLater(Runnable doRun)  {    java.awt.EventQueue.invokeLater(doRun);  }  /**    * Calls {@link java.awt.EventQueue.invokeAndWait} with the   * specified {@link Runnable}.    */  public static void invokeAndWait(Runnable doRun)  throws InterruptedException,  InvocationTargetException  {    java.awt.EventQueue.invokeAndWait(doRun);  }  /**    * Calls {@link java.awt.EventQueue.isEventDispatchThread}.   */  public static boolean isEventDispatchThread()  {    return java.awt.EventQueue.isDispatchThread();  }}

⌨️ 快捷键说明

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