Java Swing Focus getFocusableComponentOrChild(Component c, boolean deepest)

Here you can find the source of getFocusableComponentOrChild(Component c, boolean deepest)

Description

Returns the first component in the tree of c that can accept the focus.

License

Open Source License

Parameter

Parameter Description
c the root of the component hierarchy to search
deepest if <code>deepest</code> is true the method will return the first and deepest component that can accept the focus. For example, if both a child and its parent are focusable and <code>deepest</code> is true, the child is returned.

Declaration

public static Component getFocusableComponentOrChild(Component c,
        boolean deepest) 

Method Source Code

//package com.java2s;
/**/*from  ww  w .  j  a  va  2s  .co m*/
 * $RCSfile$
 * $Revision: 128 $
 * $Date: 2004-10-25 20:42:00 -0300 (Mon, 25 Oct 2004) $
 *
 * Copyright (C) 2004-2008 Jive Software. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.awt.*;

import javax.swing.*;

public class Main {
    /**
     * Returns the first component in the tree of <code>c</code> that can accept
     * the focus.
     *
     * @param c       the root of the component hierarchy to search
     * @param deepest if <code>deepest</code> is true the method will return the first and deepest component that can accept the
     *                focus.  For example, if both a child and its parent are focusable and <code>deepest</code> is true, the child is
     *                returned.
     * @see #focusComponentOrChild
     */
    public static Component getFocusableComponentOrChild(Component c,
            boolean deepest) {
        if (c != null && c.isEnabled() && c.isVisible()) {
            if (c instanceof Container) {
                Container cont = (Container) c;

                if (deepest == false) { // first one is a good one
                    if (c instanceof JComponent) {
                        JComponent jc = (JComponent) c;
                        if (jc.isRequestFocusEnabled()) {
                            return jc;
                        }
                    }
                }

                int n = cont.getComponentCount();
                for (int i = 0; i < n; i++) {
                    Component child = cont.getComponent(i);
                    Component focused = getFocusableComponentOrChild(child,
                            deepest);
                    if (focused != null) {
                        return focused;
                    }
                }

                if (c instanceof JComponent) {
                    if (deepest == true) {
                        JComponent jc = (JComponent) c;
                        if (jc.isRequestFocusEnabled()) {
                            return jc;
                        }
                    }
                } else {
                    return c;
                }
            }
        }

        return null;
    }
}

Related

  1. focusFirstFocusableComponent(Component c)
  2. focusLater(final Component component)
  3. focusLater(final Component component)
  4. focusOnOpen(final JComponent component)
  5. getFocusableComponentOrChild(Component c, boolean deepest)
  6. getPermanentFocusOwner()
  7. hasFocus(Component component)
  8. hasFocusOwner(final Component component)
  9. installDefaultFocusHandling(Container c)