像这样,A a = new A(),我怎么能得到一个名字?(从a获得一个字符串"a")?
有一个JPanel包含一些JTextFields,一个map包含所有JTextFields的名称(变量的名称).我想将地图的值设置为JTextFields的文本.
public void mapToJPanel(Map map, JPanel panel) {
Component[] compArr = panel.getComponents();
for (Component comp : compArr) {
if (comp.getClass().getSimpleName().equals("JTextField")) {
JTextField textField = (JTextField) comp;
textField.setText(map.get(textField.getName()).toString());//getName() method
}
}
}
Run Code Online (Sandbox Code Playgroud)
在getName()方法中,我得到null -_-我知道getName()方法不用于获取变量名.我正在使用netbeans进行Java swing可视化开发,因此我无法重写组件(如JTextField).
Ste*_*n C 16
你不能,因为一个对象没有名字.请考虑以下示例:
A a = new A();
A b = a;
Run Code Online (Sandbox Code Playgroud)
A现在这个实例的"名称"是什么?是"a"吗?是"b"吗?
那怎么样?
A[] a = new A[] { new A(), new A()};
a[0] = a[1];
Run Code Online (Sandbox Code Playgroud)
实例的"名称"是a[1]什么?
我的观点是,您无法提出在各种上下文中工作的通用Java对象名称的有用/可用定义.包版问题包括:
Java最接近对象名称的是对象的"身份哈希码"值.它不是唯一的,但它具有在当前JVM中对象的生命周期内不会更改的属性.(但即使是身份哈希码也会以运行时成本出现......这在某些人看来会使Java设计失误.)
命名对象的合理方法是(正如其他人所说的)将"名称"字段添加到相关类(或使用现有字段)并根据需要自己管理名称.
在"对象"实际上是a的更具体的情况下,JComponent不能依赖给定的组件来具有名称.(该getName()方法可以返回null.)但是,如果您愿意,可以遍历任何JComponent层次结构并根据需要在任何组件上设置名称.
| 归档时间: |
|
| 查看次数: |
34312 次 |
| 最近记录: |