繁体   English   中英

如何在jTabbedpane中获取textarea的名称?

[英]How to get the name of textarea inside a jTabbedpane?

在我的程序中,我动态生成一个新的textarea ta并使用唯一标识符将其重命名(在我的情况下为tabidis)

            JScrollPane panel2 = new JScrollPane();
            panel2.setName(tabidis);

            ta = new JTextArea("");
            ta.setColumns(30);
            ta.setRows(20);
            ta.setEditable(false);
            panel2.setViewportView(ta);
            ta.setName(tabidis);

            jTabbedPane1.add(username4, panel2);

元素ta是动态生成的,并相应地给出了各自的名称。

我需要一种方法来获得相对于所选标签的“ ta”名称

很大程度上取决于UI的结构,如果保持一致,则变得更加容易,如果不一致,则变得更加困难。

您可以使用类似的方法从给定的父组件开始查找给定类型的所有子组件。

public static <T extends Component> List<T> findAllChildren(JComponent component, Class<T> clazz) {
    List<T> lstChildren = new ArrayList<T>(5);
    for (Component comp : component.getComponents()) {
        if (clazz.isInstance(comp)) {
            lstChildren.add((T) comp);
        } else if (comp instanceof JComponent) {
            lstChildren.addAll(findAllChildren((JComponent) comp, clazz));
        }
    }

    return Collections.unmodifiableList(lstChildren);
}

这将返回特定类型的子组件的List

就像是...

List<JTextArea> areas = findAllChildren(jTabbedPane1.getSelectedComponent(), JTextArea.class);
if (areas.size() > 0) {
    JTextArea ta = areas.get(0);
    String name = ta.getName();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM