在秋千中通过反射添加组件?

时间:2013-06-20 15:29:04

标签: java swing reflection

这可能是一个非常愚蠢的方法,但是说我们有一个有很多字段组成的类,如何用反射在每个循环中添加它们?

这是我迄今为止尝试过的事情(尽管显然注定要失败):

for(Field bits: this.getClass().getDeclaredFields()){
            try {
                this.add((Component)Class.forName(bits.getName()).newInstance());
            } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

每个字段一个类,所以上面的操作不起作用,但我已经定义了它们是什么,它们应该在运行时存在。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您尝试从字段名称创建一个类,因此它不起作用。

bits.getName()返回类似“myHelloWorldLabel”而不是javax.swing.JLabel。

您可以添加字段bits.get(this)的值,也可以从类bits.getDeclaringClass().newInstance()创建新对象。

我还要添加一个检查,该类扩展了JComponent。