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.

Return

Component that was focused on.

Declaration

public static Component getFocusableComponentOrChild(Component c, boolean deepest) 

Method Source Code

//package com.java2s;
/**//from  ww w .j av a  2 s  .c  o 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 {
    /**
     * 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. focusFirstFocusableChild(Container c)
  2. focusFirstFocusableComponent(Component c)
  3. focusLater(final Component component)
  4. focusLater(final Component component)
  5. focusOnOpen(final JComponent component)
  6. getFocusableComponentOrChild(Component c, boolean deepest)
  7. getPermanentFocusOwner()
  8. hasFocus(Component component)
  9. hasFocusOwner(final Component component)