在我的程序中,我动态生成一个新的文本区域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();
}