在swing中通过反射添加组件



这可能是一个非常愚蠢的方式去做的事情,但假设我们有一个类的许多字段是组件,如何去添加它们在每个循环与反射?

这是我到目前为止所做的尝试(虽然显然注定要失败):

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();
            }
        }

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

我应该怎么做?

您尝试从字段名创建类,因此无法工作。

bits.getName()返回类似"myHelloWorldLabel"的东西,而不是javax.swing.JLabel.

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

我还将添加一个检查类是否扩展了JComponent.

相关内容

  • 没有找到相关文章

最新更新