неділя, 20 лютого 2011 р.

Поиск Swing-компонентов на форме по имени

У JComponent есть отличный метод setName("NAME"), который позволяет найти компонент. Загвоздка вся в том, что метод должен быть рекурсивным. И после продолжительных мучений получилось:

private JComponent findComponent(JComponent parent, String name) {

        for (int i = 0; i < parent.getComponentCount(); i++) {
            if (parent.getComponent(i) instanceof JComponent) {
                JComponent component = (JComponent) parent.getComponent(i);
                if (component.getName() != null && component.getName().equals(name)) {
                    return component;
                }
                if (component.getComponentCount() > 0) {
                    JComponent child = findComponent(component, name);
                    if (child != null && child.getName() != null && child.getName().equals(name)) {
                        return child;
                    }
                }
            }
        }
        return null;


Код, конечно, получился немного козий, но зато работает )))))

Немає коментарів:

Дописати коментар