public class ButtonGroups extends JPanel { 
   static String[] ids = { 
      "June", "Ward", "Beaver", 
      "Wally", "Eddie", "Lumpy", 
   }; 
   static JPanel 
   makeBPanel(Class bClass, String[] ids) { 
      ButtonGroup bg = new ButtonGroup(); 
      JPanel jp = new JPanel(); 
      String title = bClass.getName(); 
      title = title.substring( 
          title.lastIndexOf('.') + 1); 
      jp.setBorder(new TitledBorder(title)); 
      for(int i = 0; i < ids.length; i++) { 
         AbstractButton ab =null; //定义按钮和菜单项的一般行为。
          try { 
             // Get the dynamic constructor method 
             // that takes a String argument: 
             Constructor ctor = bClass.getConstructor( 
                new Class[] { String.class }); 
             
             // Create a new object: 
             ab = (AbstractButton)ctor.newInstance( 
                new Object[]{ids[i]}); 
          
          } catch(Exception ex) { 
             System.out.println("can't create " + 
                bClass); 
          } 
          bg.add(ab); 
          jp.add(ab); 
      } 
      return jp; 
   } 
   public ButtonGroups() { 
      add(makeBPanel(JButton.class, ids)); 
      add(makeBPanel(JToggleButton.class, ids)); 
      add(makeBPanel(JCheckBox.class, ids)); 
      add(makeBPanel(JRadioButton.class, ids)); 
   } 
   public static void main(String args[]) { 
      Show.inFrame(new ButtonGroups(), 500, 300); 
   } 
}
从TRY到return中几个类的用法和解释是什么,看不懂

解决方案 »

  1.   

    我的理解,根据bclass的类型动态的实例化对象。
    由于没有Show这个类,我把你的main函数改动了一下:    public static void main(String args[]) { 
       ButtonGroups bg = new ButtonGroups();
       JFrame frame = new JFrame();
       frame.add(bg);
       frame.setSize(500,300);
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setVisible(true);
          //Show.inFrame(new ButtonGroups(), 500, 300); 
       } 
      

  2.   

    这段代码设计到java反射,有时间研究下
    for(int i = 0; i < ids.length; i++) { 
             AbstractButton ab =null; //定义按钮和菜单项的一般行为。
              try { 
                 // Get the dynamic constructor method 
                 // that takes a String argument: 
    //生成bClass这个类的构造方法
                 Constructor ctor = bClass.getConstructor( 
                    new Class[] { String.class }); 
                 
                 // Create a new object: 
    //实例化bClass类为一个对象
                 ab = (AbstractButton)ctor.newInstance( 
                    new Object[]{ids[i]}); 
              
              } catch(Exception ex) { 
    //捕获异常,没什么说的
                 System.out.println("can't create " + 
                    bClass); 
              } 
    //bg添加ab button
              bg.add(ab); 
              jp.add(ab); 
          } 
          return jp;