【发布时间】:2014-04-11 19:38:15
【问题描述】:
我有一个名为“p0_1000”的 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]);
}
}
按名称调用组件。
public Component getComponentByName(String name) {
if (componentMap.containsKey(name)) {
return (Component) componentMap.get(name);
}
else return null;
}
如果我直接使用 p0_1000.setToolTipText("trying");当鼠标在相关文本字段上时成功出现工具提示文本。
但如果我使用 getComponentByName("p0_1000").setToolTipText("trying"); setToolTipText 无法识别。
getComponentByName("p0_1000") 我测试成功。因为如果我输入“。”在方法名称之后,可用的操作列表来了,我可以使用它们(例如 .setVisible(false) 成功工作)
当我按名称调用组件时,一些添加、设置或获取不在可用操作列表中的命令。
感谢任何建议、想法、cmets。
问候。
---已解决---
public JComponent getComponentByName(String name) {
if (componentMap.containsKey(name)) {
return (JComponent) componentMap.get(name);
}
else return null;
}
以上更改解决了我的问题。
【问题讨论】:
标签: java swing hashmap components