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

📄 swingutilities.java

📁 Java手机-PDA程序设计入门源代码.rar
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            else {
                return false;
            }
        }
        return eventDispatchThreadClass.isInstance(currentThread);
        
    }


    /*
     * --- Accessibility Support ---
     *
     */

    /**
     * Get the index of this object in its accessible parent.
     *
     * @return -1 of this object does not have an accessible parent.
     * Otherwise, the index of the child in its accessible parent.
     */
    public static int getAccessibleIndexInParent(Component c) {
        int index = -1;
        Container parent = c.getParent();
        if (parent != null && parent instanceof Accessible) {
            Component ca[] = parent.getComponents();
            for (int i = 0; i < ca.length; i++) {
                if (ca[i] instanceof Accessible) {
                    index++;
                }
                if (c.equals(ca[i])) {
                    return index;
                }
            }
        }
        return -1;
    }

    /**
     * Returns the Accessible child contained at the local coordinate
     * Point, if one exists.
     *
     * @return the Accessible at the specified location, if it exists
     */
    public static Accessible getAccessibleAt(Component c, Point p) {
        if (c instanceof Accessible) {
            Accessible a = (Accessible) c;
            if (a != null) {
                AccessibleContext ac = a.getAccessibleContext();
                if (ac != null) {
                    AccessibleComponent acmp;
                    Point location;
                    int nchildren = ac.getAccessibleChildrenCount();
                    for (int i=0; i < nchildren; i++) {
                        a = ac.getAccessibleChild(i);
                        if ((a != null)) {
                            ac = a.getAccessibleContext();
                            if (ac != null) {
                                acmp = ac.getAccessibleComponent();
                                if ((acmp != null) && (acmp.isShowing())) {
                                    location = acmp.getLocation();
                                    Point np = new Point(p.x-location.x,
                                                         p.y-location.y);
                                    if (acmp.contains(np)){
                                        return a;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return (Accessible) c;
        } else {
            Component ret = c;
            if (!c.contains(p.x,p.y)) {
                ret = null;
            } else if (c instanceof Container) {
                Container cnt = (Container) c;
                int ncomponents = cnt.getComponentCount();
                for (int i=0; i < ncomponents; i++) {
                    Component comp = cnt.getComponent(i);
                    if ((comp != null) && comp.isShowing()) {
                        Point location = comp.getLocation();
                        if (comp.contains(p.x-location.x,p.y-location.y)) {
                            ret = comp;
                        }
                    }
                }
            }
            if (ret instanceof Accessible) {
                return (Accessible) ret;
            }
        }
        return null;
    }

    /**
     * Get the state of this object.
     *
     * @return an instance of AccessibleStateSet containing the current state
     * set of the object
     * @see AccessibleState
     */
    public static AccessibleStateSet getAccessibleStateSet(Component c) {
        AccessibleStateSet states = new AccessibleStateSet();
        if (c.isEnabled()) {
            states.add(AccessibleState.ENABLED);
        }
        if (c.isFocusTraversable()) {
            states.add(AccessibleState.FOCUSABLE);
        }
        if (c.isVisible()) {
            states.add(AccessibleState.VISIBLE);
        }
        if (c.isShowing()) {
            states.add(AccessibleState.SHOWING);
        }
        // [[[FIXME:  WDW - for JDK1.2 this code can be replaced with
        //            c.hasFocus()]]]
        for (Container p = c.getParent(); p != null; p = p.getParent()) {
            if (p instanceof Window) {
                if (((Window)p).getFocusOwner() == c) {
                    states.add(AccessibleState.FOCUSED);
                }
            }
        }
        if (c instanceof Accessible) {
            AccessibleContext ac = ((Accessible) c).getAccessibleContext();
            if (ac != null) {
                Accessible ap = ac.getAccessibleParent();
                if (ap != null) {
                    AccessibleContext pac = ap.getAccessibleContext();
                    if (pac != null) {
                        AccessibleSelection as = pac.getAccessibleSelection();
                        if (as != null) {
                            states.add(AccessibleState.SELECTABLE);
                            int i = ac.getAccessibleIndexInParent();
                            if (i >= 0) {
                                if (as.isAccessibleChildSelected(i)) {
                                    states.add(AccessibleState.SELECTED);
                                }
                            }
                        }
                    }
                }
            }
        }
        if (c instanceof JComponent) {
            if (((JComponent) c).isOpaque()) {
                states.add(AccessibleState.OPAQUE);
            }
        }
        return states;
    }

    /**
     * Returns the number of accessible children in the object.  If all
     * of the children of this object implement Accessible, than this
     * method should return the number of children of this object.
     *
     * @return the number of accessible children in the object.
     */
    public static int getAccessibleChildrenCount(Component c) {
        int count = 0;
        if (c instanceof Container) {
            Component[] children = ((Container) c).getComponents();
            for (int i = 0; i < children.length; i++) {
                if (children[i] instanceof Accessible) {
                    count++;
                }
            }
        }
        return count;
    }

    /**
     * Return the nth Accessible child of the object.
     *
     * @param i zero-based index of child
     * @return the nth Accessible child of the object
     */
    public static Accessible getAccessibleChild(Component c, int i) {
        if (c instanceof Container) {
            Component[] children = ((Container) c).getComponents();
            int count = 0;
            for (int j = 0; j < children.length; j++) {
                if (children[j] instanceof Accessible) {
                    if (count == i) {
                        return (Accessible) children[j];
                    } else {
                        count++;
                    }
                }
            }
        }
        return null;
    }

    /**
     * Return the child component which has focus, if any.  The HotJava
     * SecurityManager forbids applet access to getFocusOwner(), so if the
     * component is an applet, we check whether a JComponent has focus.
     * Non-Swing components in an applet on HotJava are out-of-luck,
     * unfortunately.
     */
    public static Component findFocusOwner(Component c) {
        if (c instanceof Window) {
            return ((Window)c).getFocusOwner();
        }

        if (c instanceof JComponent && ((JComponent)c).hasFocus()) {
            return c;
        }
        if (c instanceof Container) {
            int n = ((Container)c).countComponents();
            for (int i = 0; i < n; i++) {
                Component focusOwner =
                    findFocusOwner(((Container)c).getComponent(i));
                if (focusOwner != null) {
                    return focusOwner;
                }
            }
            return null;
        } else {
            return null;  // Component doesn't have hasFocus().
        }
    }

    /**
     * If c is a JRootPane descendant return its JRootPane ancestor.
     * If c is a RootPaneContainer then return its JRootPane.
     * @return the JRootPane for Component c or null.
     */
    public static JRootPane getRootPane(Component c) {
        if (c instanceof RootPaneContainer) {
            return ((RootPaneContainer)c).getRootPane();
        }
        for( ; c != null; c = c.getParent()) {
            if (c instanceof JRootPane) {
                return (JRootPane)c;
            }
        }
        return null;
    }


    /**
     * Returns the root component for the current component tree.
     * @return the first ancestor of c that's a Window or the last Applet ancestor
     */
    public static Component getRoot(Component c) {
        Component applet = null;
        for(Component p = c; p != null; p = p.getParent()) {
            if (p instanceof Window) {
                return p;
            }
            if (p instanceof Applet) {
                applet = p;
            }
        }
        return applet;
    }



    // Don't use String, as it's not guaranteed to be unique in a Hashtable.
    private static final Object sharedOwnerFrameKey =
       new StringBuffer("SwingUtilities.sharedOwnerFrame");

    /**
     * Returns a toolkit-private, shared, invisible Frame
     * to be the owner for JDialogs and JWindows created with
     * null owners.
     */
    static Frame getSharedOwnerFrame() {
        Frame sharedOwnerFrame =
            (Frame)SwingUtilities.appContextGet(sharedOwnerFrameKey);
        if (sharedOwnerFrame == null) {
            sharedOwnerFrame = new Frame() {
                public void show() {
                    // This frame can never be shown
                }
                public synchronized void dispose() {
                    try {
                        getToolkit().getSystemEventQueue();
                        super.dispose();
                    } catch (Exception e) {
                        // untrusted code not allowed to dispose
                    }
                }
            };
            SwingUtilities.appContextPut(sharedOwnerFrameKey,
                                         sharedOwnerFrame);
        }
        return sharedOwnerFrame;
    }

    // The following static var and methods are a temporary
    // workaround for a Solaris bug where disposing modal dialogs
    // can sometimes cause a segmentation violation. Once this
    // AWT bug is fixed and available in browsers, we can remove
    // this workaround.
    private static final Object dialogsKey =
        new StringBuffer("SwingUtilities.dialogs");

    static JDialog getRecycledModalDialog(Frame frame, String title) {
        Vector dialogs = (Vector)SwingUtilities.appContextGet(dialogsKey);
        if (dialogs == null) {
            dialogs = new Vector();
            SwingUtilities.appContextPut(dialogsKey, dialogs);
        }
        JDialog dialog = null;
        synchronized(dialogs) {
            for(int i = 0; i < dialogs.size(); i++) {
                dialog = (JDialog)dialogs.elementAt(i);
                if (dialog.getParent() == frame) {
                    //System.out.println("Found available dialog: "+dialog);
                    dialogs.removeElement(dialog);
                    dialog.setTitle(title);
                    return dialog;
                }
            }
            dialog = new JDialog(frame, title, true);
            //System.out.println("Created new dialog: "+dialog);
        }
        return dialog;
    }

    static void recycleModalDialog(JDialog dialog) {
        Vector dialogs = (Vector)SwingUtilities.appContextGet(dialogsKey);
        synchronized(dialogs) {
            dialog.getContentPane().removeAll();
            dialogs.addElement(dialog);
        }
    }


    /* Don't make these AppContext accessors public or protected --
     * since AppContext is in sun.awt in 1.2, we shouldn't expose it
     * even indirectly with a public API.
     */
    static Hashtable appContextTable = new Hashtable(2);

    static Object appContextGet(Object key) {
        


        return appContextTable.get(key);
        
    }

    static void appContextPut(Object key, Object value) {
        


        appContextTable.put(key, value);
        
    }

    static void appContextRemove(Object key) {
        


        appContextTable.remove(key);
        
    }


    static Class loadSystemClass(String className) throws ClassNotFoundException {
        


	return Class.forName(className);
        	
    }


    final static void doPrivileged(final Runnable doRun) {
      









        doRun.run();  // ... "a doo run run".
      
    }


   /*
     * Convenience function for determining ComponentOrientation.  Helps us
     * avoid having Munge directives throughout the code.
     */
    static boolean isLeftToRight( Component c ) {
        


        return true;
        
    }
    private SwingUtilities() {
        throw new Error("SwingUtilities is just a container for static methods");
    }
}

⌨️ 快捷键说明

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