Module  java.desktop
软件包  javax.swing

Class SwingUtilities

  • All Implemented Interfaces:
    SwingConstants


    public class SwingUtilities
    extends Object
    implements SwingConstants
    Swing的一个实用方法的集合。
    从以下版本开始:
    1.2
    • 方法详细信息

      • isRectangleContainingRectangle

        public static final boolean isRectangleContainingRectangle​(Rectangle a,
                                                                   Rectangle b)
        返回 true如果@ {代码}包含 b
        参数
        a - 第一个矩形
        b - 第二个矩形
        结果
        true如果@ {代码}包含 b
      • getLocalBounds

        public static Rectangle getLocalBounds​(Component aComponent)
        返回组件 aComponent的矩形(0,0,bounds.width,bounds.height)
        参数
        aComponent - 一个组件
        结果
        组件 aComponent的局部边界
      • getWindowAncestor

        public static Window getWindowAncestor​(Component c)
        返回第 Window祖先 c ,或 null如果 c未包含在里面 Window
        参数
        c - Component获取 Window祖先。
        结果
        第一 Window祖先 c ,或 null如果 c未包含在内部 Window
        从以下版本开始:
        1.3
      • convertPoint

        public static Point convertPoint​(Component source,
                                         Point aPoint,
                                         Component destination)
        转换为aPointsource坐标系destination坐标系。 如果sourcenull ,则aPoint假设为destination的根组件坐标系。 如果destinationnull ,则aPoint将转换为source的根组件坐标系。 如果sourcedestination都是null ,返回aPoint没有任何转换。
        参数
        source - 源组件
        aPoint - 关键
        destination - 目标组件
        结果
        转换的坐标
      • convertPoint

        public static Point convertPoint​(Component source,
                                         int x,
                                         int y,
                                         Component destination)
        source坐标系中的点(x,y)转换为坐标系destination 如果sourcenull ,则(x,y)假定为destination的根组件坐标系。 如果destinationnull ,则(x,y)将转换为source的根组件坐标系。 如果sourcedestination均为null(x,y)无需任何转换即可返回(x,y)
        参数
        source - 源组件
        x - 点的x坐标
        y - 点的y坐标
        destination - 目标组件
        结果
        转换的坐标
      • convertRectangle

        public static Rectangle convertRectangle​(Component source,
                                                 Rectangle aRectangle,
                                                 Component destination)
        source坐标系中的矩形aRectangle转换为destination坐标系。 如果sourcenullaRectangle被假定为在destination的根组件坐标系统。 如果destinationnull ,则aRectangle将转换为source的根组件坐标系。 如果sourcedestination均为nullaRectangle无需任何转换即可返回aRectangle
        参数
        source - 源组件
        aRectangle - 一个矩形
        destination - 目标组件
        结果
        转换矩形
      • getAncestorOfClass

        public static Container getAncestorOfClass​(Class<?> c,
                                                   Component comp)
        在组件层次结构中搜索comp以上的方便方法,并返回它找到的第c类的第一个对象。 可以返回null ,如果一个类c无法找到。
        参数
        c - 组件的类
        comp - 组件
        结果
        comp的祖先,或 null如果不能找到 c
      • getAncestorNamed

        public static Container getAncestorNamed​(String name,
                                                 Component comp)
        以上搜索的便捷方法comp组件层次结构中,并返回的第一对象name它找到。 可以返回null ,如果name
        参数
        name - 组件的名称
        comp - 组件
        结果
        comp的祖先,或 null如果不能找到 name
      • getDeepestComponentAt

        public static Component getDeepestComponentAt​(Component parent,
                                                      int x,
                                                      int y)
        返回的最深可见后代组件parent包含位置xy 如果parent不包含指定的位置,则返回null 如果parent不是容器,或者parent的可见后代中没有包含指定的位置,则返回parent
        参数
        parent - 开始搜索的根组件
        x - x目标位置
        y - y目标位置
        结果
        最深的组成部分
      • convertMouseEvent

        public static MouseEvent convertMouseEvent​(Component source,
                                                   MouseEvent sourceEvent,
                                                   Component destination)
        返回类似于sourceEvent的MouseEvent,但其x和y成员已转换为destination的坐标系。 如果sourcenullsourceEvent x和y的成员被认为是成destination的根组件坐标系统。 如果destinationnull ,则返回的MouseEvent将位于source的坐标系中。 sourceEvent不会更改。 返回一个新的事件。 如果目的地为非null ,则返回事件的source字段将设置为destination ,使用translateMouseEvent()方法将鼠标事件从一个组件转换到另一个组件而不更改源。
        参数
        source - 源组件
        sourceEvent - 源鼠标事件
        destination - 目标组件
        结果
        新的鼠标事件
      • convertPointToScreen

        public static void convertPointToScreen​(Point p,
                                                Component c)
        将点从组件的坐标系转换为屏幕坐标。
        参数
        p - 点对象(转换为新坐标系)
        c - 一个Component对象
      • convertPointFromScreen

        public static void convertPointFromScreen​(Point p,
                                                  Component c)
        将一个点从屏幕坐标转换为组件的坐标系
        参数
        p - 点对象(转换为新坐标系)
        c - 组件对象
      • windowForComponent

        public static Window windowForComponent​(Component c)
        返回第Window祖先c ,或null如果c未包含在里面Window

        注意:此方法提供与getWindowAncestor相同的功能。

        参数
        c - Component获得 Window祖先。
        结果
        第一 Window祖先 c ,或 null如果 c未包含在内部 Window
      • isDescendingFrom

        public static boolean isDescendingFrom​(Component a,
                                               Component b)
        如果组件 a从组件 b true则返回 b
        参数
        a - 第一个组件
        b - 第二个组件
        结果
        true如果组件 a从组件下降 b
      • computeIntersection

        public static Rectangle computeIntersection​(int x,
                                                    int y,
                                                    int width,
                                                    int height,
                                                    Rectangle dest)
        方便计算两个矩形的交点,而不分配一个新的矩形。 如果两个矩形不相交,则返回的矩形从(0,0)开始,宽度和高度都为零。
        参数
        x - 第一个矩形 x的X坐标
        y - 第一个矩形 y的Y坐标
        width - 第一个矩形的宽度
        height - 第一个矩形的高度
        dest - 第二个矩形
        结果
        dest ,修改为指定交集
      • computeUnion

        public static Rectangle computeUnion​(int x,
                                             int y,
                                             int width,
                                             int height,
                                             Rectangle dest)
        计算两个矩形的并集而不分配新矩形的便捷方法。
        参数
        x - 第一个矩形的x坐标
        y - 第一个矩形的y坐标
        width - 第一个矩形的宽度
        height - 第一个矩形的高度
        dest - 第二个矩形的坐标; 在这个矩形中返回两个矩形的并集
        结果
        dest Rectangle
      • computeDifference

        public static Rectangle[] computeDifference​(Rectangle rectA,
                                                    Rectangle rectB)
        方便返回一组rectA ,表示rectA内与rectB不重叠的rectB 如果两个Rect不重叠,返回一个空数组
        参数
        rectA - 第一个矩形
        rectB - 第二个矩形
        结果
        表示 rectA中与 rectB不重叠的区域的矩形数组。
      • isLeftMouseButton

        public static boolean isLeftMouseButton​(MouseEvent anEvent)
        如果鼠标事件指定鼠标左键,则返回true。
        参数
        anEvent - 一个MouseEvent对象
        结果
        如果鼠标左键处于活动状态,则为true
      • isMiddleMouseButton

        public static boolean isMiddleMouseButton​(MouseEvent anEvent)
        如果鼠标事件指定鼠标中键,则返回true。
        参数
        anEvent - 一个MouseEvent对象
        结果
        如果鼠标中键处于活动状态,则为true
      • isRightMouseButton

        public static boolean isRightMouseButton​(MouseEvent anEvent)
        如果鼠标事件指定了鼠标右键,则返回true。
        参数
        anEvent - 一个MouseEvent对象
        结果
        如果鼠标右键处于活动状态,则为true
      • computeStringWidth

        public static int computeStringWidth​(FontMetrics fm,
                                             String str)
        使用指定的“metrics”(大小)的字体计算字符串的宽度。
        参数
        fm - 要计算的FontMetrics对象
        str - 要计算的字符串
        结果
        一个包含字符串宽度的int
      • layoutCompoundLabel

        public static String layoutCompoundLabel​(JComponent c,
                                                 FontMetrics fm,
                                                 String text,
                                                 Icon icon,
                                                 int verticalAlignment,
                                                 int horizontalAlignment,
                                                 int verticalTextPosition,
                                                 int horizontalTextPosition,
                                                 Rectangle viewR,
                                                 Rectangle iconR,
                                                 Rectangle textR,
                                                 int textIconGap)
        计算并返回图标原点的位置,文本基线的原点位置以及复合标签字符串的可能剪切版本。 相对于viewR矩形计算位置。 JComponent方向(LEADING / TRAILING)也将被考虑并相应地转换为LEFT / RIGHT值。
        参数
        c - 组件
        fm -实例 FontMetrics
        text - 文字
        icon - 图标
        verticalAlignment - 垂直对齐
        horizontalAlignment - 水平对齐
        verticalTextPosition - 垂直文本位置
        horizontalTextPosition - 水平文本位置
        viewR - 可用的矩形
        iconR - 图标的矩形
        textR - 文本的矩形
        textIconGap - 文本和图标之间的差距
        结果
        复合标签字符串的可能剪辑版本
      • layoutCompoundLabel

        public static String layoutCompoundLabel​(FontMetrics fm,
                                                 String text,
                                                 Icon icon,
                                                 int verticalAlignment,
                                                 int horizontalAlignment,
                                                 int verticalTextPosition,
                                                 int horizontalTextPosition,
                                                 Rectangle viewR,
                                                 Rectangle iconR,
                                                 Rectangle textR,
                                                 int textIconGap)
        计算并返回图标原点的位置,文本基线的原点位置以及复合标签字符串的可能剪切版本。 相对于viewR矩形计算位置。 这个layoutCompoundLabel()不知道如何处理horizontalTextPosition中的LEADING / TRAILING值(它们将默认为RIGHT)和horizontalAlignment(它们将默认为CENTER)。 改用layoutCompoundLabel()的其他版本。
        参数
        fm -实例 FontMetrics
        text - 文字
        icon - 图标
        verticalAlignment - 垂直对齐
        horizontalAlignment - 水平对齐
        verticalTextPosition - 垂直文本位置
        horizontalTextPosition - 水平文本位置
        viewR - 可用的矩形
        iconR - 图标的矩形
        textR - 文本的矩形
        textIconGap - 文字与图示之间的差距
        结果
        复合标签字符串的可能剪辑版本
      • paintComponent

        public static void paintComponent​(Graphics g,
                                          Component c,
                                          Container p,
                                          int x,
                                          int y,
                                          int w,
                                          int h)
        绘制一个组件到指定的Graphics 此方法主要用于渲染不可见的Component s,作为可见包含层次结构的一部分,但用于呈现。 例如,如果您正在进行自己的渲染,并且想要渲染一些文本(甚至HTML),则可以使用JLabel的文本呈现支持,并通过此方法直接绘制, JLabel标签添加到可见的遏制层次。

        该方法利用CellRendererPane处理实际绘画,只有在使用一个组件进行渲染时才建议使用。 如果您使用多个组件来处理渲染,如JTable ,直接使用CellRendererPane 否则,如下所述,您可能会得到一个CellRendererPaneComponent

        如果c的父母是不是CellRendererPane ,新CellRendererPane创建, c被添加到它,并且CellRendererPane添加到p 如果c的母亲是CellRendererPane ,而CellRendererPane的父母不是p ,则被添加到p

        组件应该从JComponent或者是另一种轻量级组件。 轻量级组件是“轻量级”属性(由Component isLightweight方法返回)为真。 如果组件不轻便,则会发生错误的地图:崩溃,异常,绘画问题...

        参数
        g - 要绘制的 Graphics对象
        c - Component
        p - 中间件 Container
        x - 一个int指定从图形上下文的左边缘测量的区域的左侧,以像素为单位
        y - 一个int指定要绘制的区域的顶部,以从图形上下文的顶部边缘向下测量的像素
        w - 一个int指定绘制的区域的宽度,以像素为单位
        h - 一个int指定绘制的区域的高度,以像素为单位
        另请参见:
        CellRendererPaneComponent.isLightweight()
      • updateComponentTreeUI

        public static void updateComponentTreeUI​(Component c)
        一个简单的头脑的感觉变化:请求树中的每个节点为 updateUI() - 即使用当前的外观来初始化其UI属性。
        参数
        c - 组件
      • invokeLater

        public static void invokeLater​(Runnable doRun)
        导致doRun.run()在AWT事件分派线程上异步执行。 这将在所有待处理的AWT事件处理完毕之后发生。 当应用程序线程需要更新GUI时,应使用此方法。 在以下示例中, invokeLater调用队列Runnable对象doHelloWorld对事件分派线程,然后打印一条消息。
          Runnable doHelloWorld = new Runnable() {
             public void run() {
                 System.out.println("Hello World on " + Thread.currentThread());
             }
         };
        
         SwingUtilities.invokeLater(doHelloWorld);
         System.out.println("This might well be displayed before the other message."); 
        如果从事件调度线程调用invokeLater - 例如,从JButton的ActionListener中, doRun.run()仍将被延迟,直到所有待处理的事件都被处理为止。 请注意,如果doRun.run()抛出一个未捕获的异常事件调度线程将展开(而不是当前线程)。

        有关此方法的其他文档和示例,请参见Concurrency in Swing

        截至1.3这个方法只是一个封面,为java.awt.EventQueue.invokeLater()

        与其他Swing不同,该方法可以从任何线程调用。

        参数
        doRun -实例 Runnable
        另请参见:
        invokeAndWait(java.lang.Runnable)
      • invokeAndWait

        public static void invokeAndWait​(Runnable doRun)
                                  throws InterruptedException,
                                         InvocationTargetException
        导致在AWT事件调度线程上同步执行doRun.run() 此调用将阻塞,直到所有待处理的AWT事件都处理doRun.run() (然后)返回doRun.run() 当应用程序线程需要更新GUI时,应使用此方法。 不应该从事件调度线程调用。 以下是一个示例,它创建一个新的应用程序线程,使用invokeAndWait从事件分派线程打印一个字符串,然后在完成后,从应用程序线程中打印一个字符串。
          final Runnable doHelloWorld = new Runnable() {
             public void run() {
                 System.out.println("Hello World on " + Thread.currentThread());
             }
         };
        
         Thread appThread = new Thread() {
             public void run() {
                 try {
                     SwingUtilities.invokeAndWait(doHelloWorld);
                 }
                 catch (Exception e) {
                     e.printStackTrace();
                 }
                 System.out.println("Finished on " + Thread.currentThread());
             }
         };
         appThread.start(); 
        请注意,如果Runnable.run方法抛出一个未捕获的异常(在事件分派线程上),它将被捕获并InvocationTargetException ,作为一个InvocationTargetException ,在调用者的线程上。

        有关此方法的其他文档和示例,请参见Concurrency in Swing

        从1.3开始,这个方法只是一个java.awt.EventQueue.invokeAndWait()的封面。

        参数
        doRun -实例 Runnable
        异常
        InterruptedException - 如果我们在等待事件调度线程完成执行时 doRun.run()
        InvocationTargetException - 如果在运行时抛出异常 doRun
        另请参见:
        invokeLater(java.lang.Runnable)
      • isEventDispatchThread

        public static boolean isEventDispatchThread​()
        如果当前线程是AWT事件调度线程,则返回true。

        截至1.3这个方法只是一个封面,为java.awt.EventQueue.isDispatchThread()

        结果
        如果当前线程是AWT事件调度线程,则为true
      • getAccessibleIndexInParent

        public static int getAccessibleIndexInParent​(Component c)
        在其可访问的父项中获取此对象的索引。

        注意:从Java 2平台v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleIndexInParent()而不是使用此方法。

        参数
        c - 组件
        结果
        -1对象没有可访问的父对象。 否则,其可访问父级中的子级索引。
      • getAccessibleAt

        public static Accessible getAccessibleAt​(Component c,
                                                 Point p)
        返回Accessible包含在本地坐标孩子Point (如果存在)。 否则返回null
        参数
        c - 组件
        p - 局部坐标
        结果
        在指定位置的Accessible ,如果存在; 否则null
      • getAccessibleStateSet

        public static AccessibleStateSet getAccessibleStateSet​(Component c)
        获取此对象的状态。

        注意:从Java 2平台v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleIndexInParent()而不是使用此方法。

        参数
        c - 组件
        结果
        包含对象的当前状态集的AccessibleStateSet实例
        另请参见:
        AccessibleState
      • getAccessibleChildrenCount

        public static int getAccessibleChildrenCount​(Component c)
        返回对象中可访问的子项数。 如果这个对象的所有子项都实现了Accessible,那么这个方法应该返回这个对象的子代数。

        注意:从Java 2平台v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleIndexInParent()而不是使用此方法。

        参数
        c - 组件
        结果
        对象中可访问的孩子的数量。
      • getAccessibleChild

        public static Accessible getAccessibleChild​(Component c,
                                                    int i)
        返回对象的第n个可访问子对象。

        注意:从Java 2平台v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleIndexInParent()而不是使用此方法。

        参数
        c - 组件
        i - 基于零的儿童索引
        结果
        对象的第n个可访问子对象
      • findFocusOwner

        @Deprecated
        public static Component findFocusOwner​(Component c)
        已过时。 截至1.4,由KeyboardFocusManager.getFocusOwner()取代。
        返回作为焦点所有者的指定的 Component的小孩 Component (如果有的话)。
        参数
        c - 搜索焦点所有者的 Component层次结构的根
        结果
        焦点所有者,或 null如果没有焦点所有者,或者如果焦点所有者不是 comp ,或后代 comp
        另请参见:
        KeyboardFocusManager.getFocusOwner()
      • getRootPane

        public static JRootPane getRootPane​(Component c)
        如果c是JRootPane后代,则返回其JRootPane祖先。 如果c是RootPaneContainer,则返回其JRootPane。
        参数
        c - 组件
        结果
        JRootPane for Component c或 null
      • getRoot

        public static Component getRoot​(Component c)
        返回当前组件树的根组件。
        参数
        c - 组件
        结果
        c的第一个祖先是一个窗口或最后一个Applet祖先
      • processKeyBindings

        public static boolean processKeyBindings​(KeyEvent event)
        处理用于在所述键绑定Component关联event 此方法仅在event.getComponent()不从JComponent或您的JComponent子类中未调用super.processKeyEvent JComponent JComponent自动处理来自其内部的processKeyEvent方法的绑定,因此您很少需要直接调用此方法。
        参数
        event - 用于标识要处理的绑定的KeyEvent以及哪个组件具有焦点。
        结果
        如果已找到并处理绑定,则为true
        从以下版本开始:
        1.4
      • notifyAction

        public static boolean notifyAction​(Action action,
                                           KeyStroke ks,
                                           KeyEvent event,
                                           Object sender,
                                           int modifiers)
        调用actionPerformedaction如果action是非null并接受发送对象。 ActionEvent的命令由以下确定:
        1. 如果通过registerKeyboardAction注册了该操作,则传入的命令字符串( null将被使用,如果null )。
        2. 动作值为Action.ACTION_COMMAND_KEY,除非是null
        3. KeyEvent的字符串值,除非getKeyChar返回KeyEvent.CHAR_UNDEFINED ..
        如果action不是null并且对其执行actionPerformed,则返回true。
        参数
        action - 一个动作
        ks - 关键笔画
        event - 一个关键事件
        sender - 发件人
        modifiers - 动作修饰符
        结果
        true如果 action是非 null并且actionPerformed被调用就可以了。
        从以下版本开始:
        1.3
        另请参见:
        Action.accept(java.lang.Object)
      • replaceUIInputMap

        public static void replaceUIInputMap​(JComponent component,
                                             int type,
                                             InputMap uiInputMap)
        方便的方法将UI InputMap为componentuiInputMap 如果uiInputMapnull ,则会删除以前安装的UI InputMap。
        参数
        component - 一个组件
        type - 一种类型
        uiInputMap - 一个 InputMap
        从以下版本开始:
        1.3
      • replaceUIActionMap

        public static void replaceUIActionMap​(JComponent component,
                                              ActionMap uiActionMap)
        方便方法将UI ActionMap更改为componentuiActionMap 如果uiActionMapnull ,则会删除以前安装的UI ActionMap。
        参数
        component - 一个组件
        uiActionMap - a ActionMap
        从以下版本开始:
        1.3
      • getUIInputMap

        public static InputMap getUIInputMap​(JComponent component,
                                             int condition)
        返回由组件component条件condition的UI提供的InputMap。

        如果UI没有安装指定类型的InputMap,则返回null

        参数
        component - 一个组件
        condition - 一个条件
        结果
        由组件中的 ActionMap的UI提供的 condition ,或者如果UI尚未安装指定类型的InputMap, null
        从以下版本开始:
        1.3
      • getUIActionMap

        public static ActionMap getUIActionMap​(JComponent component)
        返回组件component由UI提供的ActionMap。

        如果UI还没有安装ActionMap,这将返回null

        参数
        component - 一个组件
        结果
        ActionMap由UI组件中提供,或者 null如果该UI未安装的ActionMap。
        从以下版本开始:
        1.3
      • calculateInnerArea

        public static Rectangle calculateInnerArea​(JComponent c,
                                                   Rectangle r)
        存储r指定组件的r区域的位置和大小,并返回r 位置和大小指定组件的边界,调整为不包括边框区域(插图)。 此方法对于实现绘画代码的类很有用。
        参数
        c - 有关JComponent的问题; 如果是null ,此方法返回null
        r - 要修改的Rectangle实例; 可能是null
        结果
        null如果组件是null ; 否则返回传入的矩形(如果null )或指定位置和大小信息的新矩形
        从以下版本开始:
        1.4
      • getUnwrappedParent

        public static Container getUnwrappedParent​(Component component)
        返回component的第一个祖先,而不是JLayer一个实例。
        参数
        component - Component获得第一个祖先,这不是一个JLayer实例。
        结果
        component的第一个祖先不是JLayer一个例子。 如果找不到这样的祖先,则返回null
        异常
        NullPointerException - 如果 componentnull
        从以下版本开始:
        1.7
        另请参见:
        JLayer
      • getUnwrappedView

        public static Component getUnwrappedView​(JViewport viewport)
        返回第JViewport的后代,而不是JLayer一个实例。 如果找不到这样的后代,则返回null 如果viewport的视图分量不是JLayer ,该方法等效于JViewport.getView()否则JLayer.getView()将被递归调用的所有降序JLayer秒。
        参数
        viewport - JViewport获得第一个后代,其中没有一个 JLayer实例。
        结果
        第一个JViewport的后代,不是JLayer一个例子。 如果找不到这样的后代,则返回null
        异常
        NullPointerException - 如果 viewportnull
        从以下版本开始:
        1.7
        另请参见:
        JViewport.getView()JLayer