按名称和JTextComponent获取组件

时间:2014-08-12 13:35:36

标签: java swing hashmap jcomponent jtextcomponent

我将jTextField命名为“startTextBox1”

我使用下面的方法可以按名称调用它;

在课堂上创建Hashmap。

private HashMap componentMap;

使用组件名称填充hashmap。

private void createComponentMap() {
    componentMap = new HashMap<String,Component>();
    Component[] components = jDesktopPane1.getComponents();
    for (int i=0; i < components.length; i++) {
            componentMap.put(components[i].getName(), components[i]);
    }
}

对于呼叫组件的名称。

public JComponent getComponentByName(String name) {
    if (componentMap.containsKey(name)) {
            return (JComponent) componentMap.get(name);
    }
    else return null;
}

当我拨打getComponentByName("startTextBox1").getName()时,它会成功地为我提供startTextBox1。

但是我不能调用getComponentByName("startTextBox1").getText()因为映射的组件是JComponent而getName()是JComponent方法。但是getText()是JTextComponent对象。

如何在此方案中从文本字段中获取文本?

1 个答案:

答案 0 :(得分:1)

这个怎么样?

public String getTextByComponentName(String name) {
    if (componentMap.containsKey(name)) {
            JComponent comp = (JComponent) componentMap.get(name);
            if (comp instanceof JTextComponent) {
                  return ((JTextComponent)comp).getText();
            }
    }

    return null;
}