Here you can find the source of focusComponentOrChild(Component c, boolean deepest)
c
that can accept the focus.
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. |
public static Component focusComponentOrChild(Component c, boolean deepest)
//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; } }