Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按名称和JTextComponent获取组件_Java_Swing_Hashmap_Jcomponent_Jtextcomponent - Fatal编程技术网

Java 按名称和JTextComponent获取组件

Java 按名称和JTextComponent获取组件,java,swing,hashmap,jcomponent,jtextcomponent,Java,Swing,Hashmap,Jcomponent,Jtextcomponent,我有一个名为“startTextBox1”的jTextField 我用下面的方法可以叫它名字 在类中创建Hashmap private HashMap componentMap; 用组件名称填充hashmap private void createComponentMap() { componentMap = new HashMap<String,Component>(); Component[] components = jDesktopPane1.getComp

我有一个名为“startTextBox1”的jTextField

我用下面的方法可以叫它名字

在类中创建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]);
    }
}
当我调用
getComponentByName(“startTextBox1”).getName()
时,它成功地给出了startTextBox1

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

在这种情况下,如何从文本字段中获取文本?

这个怎么样

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;
}

可能解决当前问题。有什么通用的解决方法吗?我的意思是不为每种类型创建方法,而是在代码中实现它。但是当我调用这个方法时,我不能键入.getText(),它会生成编译错误。但首先提到的特定类型调用方法成功地工作,仅供参考。
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;
}