Java Swing Focus focusComponentOrChild(Component c, boolean deepest)

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

Description

Puts the focus on 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 focus 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 focused.

Return

Component that was focused on.

Declaration

public static Component focusComponentOrChild(Component c,
        boolean deepest) 

Method Source Code

//package com.java2s;
/**//from w w w.j a v  a 2s  .  co m
 * $RCSfile: ,v $
 * $Revision: $
 * $Date: $
 * 
 * Copyright (C) 2004-2011 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.Component;
import java.awt.Container;

import javax.swing.JComponent;

public class Main {
    /**
     * Puts the focus on the first component in the tree of <code>c</code> that
     * can accept the focus.
     * 
     * @see #getFocusableComponentOrChild
     * @param c
     *            Component to focus on.
     * @return Component that was focused on.
     */
    public static Component focusComponentOrChild(Component c) {
        return focusComponentOrChild(c, false);
    }

    /**
     * Puts the focus on 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 focus 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 focused.
     * @see #getFocusableComponentOrChild
     * @return Component that was focused on.
     */
    public static Component focusComponentOrChild(Component c,
            boolean deepest) {
        final Component focusable = getFocusableComponentOrChild(c, deepest);
        if (focusable != null) {
            focusable.requestFocus();
        }
        return focusable;
    }

    /**
     * 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
     * @see #focusComponentOrChild
     * @deprecated replaced by
     *             {@link #getFocusableComponentOrChild(Component,boolean)}
     * @return Component that was focused on.
     */
    public static Component getFocusableComponentOrChild(Component c) {
        return getFocusableComponentOrChild(c, false);
    }

    /**
     * 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
     * @return Component that was focused on.
     */
    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) { // 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) {
                        JComponent jc = (JComponent) c;
                        if (jc.isRequestFocusEnabled()) {
                            return jc;
                        }
                    }
                } else {
                    return c;
                }
            }
        }

        return null;
    }
}

Related

  1. containerContainsFocus(Container cont)
  2. containerContainsFocus(Container cont)
  3. createWizardFocusAdapter()
  4. focusComponent(Component comp)
  5. focusComponentOrChild(Component c)
  6. focusFirstFocusableChild(Container c)
  7. focusFirstFocusableComponent(Component c)
  8. focusLater(final Component component)
  9. focusLater(final Component component)