Frame1中存在某个父类中定义的JButton,并载入了某个Panel类,上面定义了一些对象。
在程序中可以直接写代码:
btn1.setVisible(true);  //当前Frame1中定义了JButton:btn1
btn2.setVisible(true);  //当前Frame1继承的父类中定义了JButton:btn2
qryPanel1.btn3.setVisible(true);//当前Frame1载入了QryPanel1中定义了JButton:btn3这时候三个按钮都能被隐藏。现在我要实现:
在某个文档中记录了如下配置:
btn1 true;btn2 true;qryPanel1.btn3 true根据这个配置文件,我要在Frame1运行时,自动根据名称找到这些对象,并将之隐藏。类似:
((JButton)eval("btn1")).setVisible(true);
((JButton)eval("btn2")).setVisible(true);
((JButton)eval("qryPanel1.btn3")).setVisible(true);

解决方案 »

  1.   

    用反射
    使用配置文件里读取到的JButton的名字,获取JButton的引用,再修改
      

  2.   

    JButton btn1=(JButton)this.getClass().getField("btn1").get(this);
    其余类似,ps:代码为考虑异常,请自行处理
      

  3.   

    通过反射, getDeclaredFields 可以得到类中所有声明的对象。问题是:如何判断某个对象“btnXxx”是来至于当前类,父类,还是来至于载入的复合对象中某个域。一一遍历,一直到Object,不是不可以,但是太烦了。 没有直接获取当前界面上所有对象名称的方法?
      

  4.   

    Class的方法boolean isInstance(Object obj)来判断目标对象是什么对象的实例