用户操作
[即时聊天] [发私信] [加为好友]
李磊ID:lliei
11182次访问,排名10806(3),好友0人,关注者0人。
lliei的文章
原创 14 篇
翻译 0 篇
转载 0 篇
评论 24 篇
最近评论
kj:kjhlggljk
lizongbo:3ks!!!当时遇到这个错误是绕了过去了,没有深入研究过 :(
upto:我做了一个功能比较强大:)
http://blog.csdn.net/upto/archive/2004/10/07/126947.aspx
Iris:好东东!
1:好!!!
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 一个简单的类代码生成器收藏

    新一篇: 李开复写给中国学生的信 | 旧一篇: 如何在LinuxAS2.1安装oracle 10g

    花了一点点时间,写了一个类玩玩,希望有点用。

    类是怎么用的呢?

    比如:输入:

    
    public className;
    private String variable1;
    private Integer variable2;
    private Double variable3;
    

    点击 Generate!,后,输出:

    
    public className {
     private String  variable1;
     private Integer  variable2;
     private Double  variable3;
    public String getVariable1()
    {
      return variable1;
    }
    public void setVariable1(String variable1)
    {
      this.variable1 = variable1;
    }
    public Integer getVariable2()
    {
      return variable2;
    }
    public void setVariable2(Integer variable2)
    {
      this.variable2 = variable2;
    }
    public Double getVariable3()
    {
      return variable3;
    }
    public void setVariable3(Double variable3)
    {
      this.variable3 = variable3;
    }
    }
    

     

    哈哈,大家就知道它的用处了吧

    源代码:

    ClassGen.java                com.jrock.util

    
    
    package com.jrock.util;
    /**
     * 输入的字符串格式为
     * 限定符 类名;
     * 变量;变量;变量;...
     * 变量格式为{限定符 数据类型 变量名}
     *  其中: 限定符  (private/...)  不能省
     *       类名                   不能省
     *       数据类型 (Integer/...)  不能省
     *       变量名                  不能省
     * @version 1.0
     */
    public class ClassGen {
      public ClassGen() {
      }
      //去掉多余的空格
      private static void dismissBlank(String[] array)
      {
        int len= array.length;
        boolean over =false;
        while(!over) {
          over=true;
          for (int i = 0; i < len; i++) {
            if (array[i].equals("")) {
              for (int j = i; j < len - 1; j++) {
                array[j] = array[j + 1];
              }
              len--;over=false;
            }
          }
        }
      }
      public static String outGetter(String parStr)
      {
        String[] array = parStr.split(" ");
        if(array.length<3) return null;
        dismissBlank(array);
        String type = array[1];
        String par = array[2];
        StringBuffer result = new StringBuffer();
        result.append("public " + type + " get" + par.substring(0,1).toUpperCase() + par.substring(1));
        result.append("()\n{\n\t return " + par + ";\n}\n");
        return result.toString();
      }
      public static String outSetter(String parStr)
      {
        String[] array = parStr.split(" ");
        if(array.length<3) return null;
        dismissBlank(array);
        String type = array[1];
        String par = array[2];
        StringBuffer result = new StringBuffer();
        result.append("public void set" + par.substring(0,1).toUpperCase() + par.substring(1));
        result.append("(" + type + " " + par + ")\n{\n\t this."+ par + " = " + par + ";\n}");
        return result.toString();
      }
      //获得函数的主体
      public static String getClassContent(String in)
      {
        if(in==null) return "";
        in=in.replace('\n',' ').trim();
        if(in.equals("")) return "";
        StringBuffer result = new StringBuffer();
        String [] parArray = in.split(";");
        if(parArray.length>0) {
          //输出类名
          result.append(parArray[0] + " {\n");
          //输出变量
          for (int i = 1; i < parArray.length; i++) {
            result.append(parArray[i] + ";\n");
          }
          //输出setter和getter
          for (int i = 1; i < parArray.length; i++) {
            result.append(outGetter(parArray[i]) + "\n");
            result.append(outSetter(parArray[i]) + "\n");
          }
          result.append("}");
        }
       return result.toString();
      }
      //测试用的
      public static void main(String[] args) {
        String inStr = "public className;\n" +
            "private String  variable1;\n" +
            "private Integer  variable2;\n" +
            "private Double  variable3;\n";
        System.out.println(getClassContent(inStr));
      }
    }
    

     

    GUI:

    ClassGenApplication.java                com.jrock.util

    
    
    import javax.swing.*;       
    import java.awt.*;
    import java.awt.event.*;
    import com.jrock.util.ClassGen;
    public class ClassGenApplication {
        public Component createComponents() {
          String inStr = "public className;\n" +
          "private String  variable1;\n" +
          "private Integer  variable2;\n" +
          "private Double  variable3;";
            final JTextArea text1 = new JTextArea(inStr,20,40);
            final JTextArea text2 = new JTextArea("",20,50);
            text1.setFont(new java.awt.Font("Arial",java.awt.Font.PLAIN,20));
            text2.setFont(new java.awt.Font("Arial",java.awt.Font.PLAIN,12));
            // Create a scrollable text area
            JScrollPane sp1 = new JScrollPane(text1);
            JScrollPane sp2 = new JScrollPane(text2);
            JButton button = new JButton("Generate!");
            button.setMnemonic(KeyEvent.VK_I);
            button.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                  text2.setText(
                      ClassGen.getClassContent(text1.getText()));
                }
            });
            JPanel pane = new JPanel();
            pane.setBorder(BorderFactory.createEmptyBorder(
                                            20, //top
                                            20, //left
                                            200, //bottom
                                            200) //right
                                            );
            pane.setLayout(new GridLayout(0, 1));
            pane.add(sp1);
            pane.add(button);
            pane.add(sp2);
            return pane;
        }
        public static void main(String[] args) {
            try {
                UIManager.setLookAndFeel(
                    UIManager.getCrossPlatformLookAndFeelClassName());
            } catch (Exception e) { }
            //Create the top-level container and add contents to it.
            JFrame frame = new JFrame("类生成工具");
            ClassGenApplication app = new ClassGenApplication();
            Component contents = app.createComponents();
            frame.getContentPane().add(contents, BorderLayout.CENTER);
            //Finish setting up the frame, and show it.
            frame.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
            frame.pack();
            frame.setVisible(true);
        }
    }
    

     

    Thanks.

     

    发表于 @ 2004年09月21日 17:08:00|评论(loading...)|编辑

    新一篇: 李开复写给中国学生的信 | 旧一篇: 如何在LinuxAS2.1安装oracle 10g

    评论

    #1 发表于2004-09-21 17:44:00  IP: 218.17.221.*
    好!!!
    #Iris 发表于2004-09-25 14:22:00  IP: 222.64.146.*
    好东东!
    #upto 发表于2004-10-12 21:00:00  IP: 219.129.114.*
    我做了一个功能比较强大:)
    http://blog.csdn.net/upto/archive/2004/10/07/126947.aspx
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © lliei