Java 按名称和JTextComponent获取组件
我有一个名为“startTextBox1”的jTextField 我用下面的方法可以叫它名字 在类中创建HashmapJava 按名称和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
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;
}