我将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对象。
如何在此方案中从文本字段中获取文本?
答案 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;
}