代码生成器.docx
- 文档编号:1620509
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:16
- 大小:140.60KB
代码生成器.docx
《代码生成器.docx》由会员分享,可在线阅读,更多相关《代码生成器.docx(16页珍藏版)》请在冰点文库上搜索。
代码生成器
项目:
代码生成器
Swing与AWT的结合使用
Swing组件的使用
弹出菜单的使用
常用监听器的使用
设计要求:
要求在一个应用程序中,能过录入类名,属性类型,属性名,来生成一个具体的类代码,代码中包含构造器及每个属性所对应的set和get方法。
这部分代码要求显示在一个文本区中,这部分代码要求有复制,粘贴功能。
CodeCreate类,生成代码的JFame
MousePopMenu类,弹出菜单
VarCode类的属性封装类
运行效果如下:
初始界面
在下面的文本框中输入类名,类型,类变量,后点击增加类变量按钮,每个类变量就会在右面的区域显示出来。
点击生成代码按钮后在主界面中生成了相应的代码。
点击鼠标右键的弹出菜单中有一系列的功能
代码如下:
publicclassVarCode
{
privateStringtype;
privateStringfield;
publicvoidsetType(Stringtype)
{
this.type=type;
}
publicStringgetType()
{
returntype;
}
publicvoidsetField(Stringfield)
{
this.field=field;
}
publicStringgetField()
{
returnthis.field;
}
publicstaticStringtoFirsttoUpper(Stringstr)
{
Stringfirst=str.substring(0,1);
Stringlast=str.substring
(1);
returnfirst.toUpperCase()+last;
}
}
importjava.util.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.text.*;
publicclassMousePopMenuextendsJPopupMenu
{
privateJTextComponentjtc;
publicMousePopMenu(JTextComponentjtxc)
{
Toolkitkit=Toolkit.getDefaultToolkit();
this.jtc=jtxc;
JMenuItemcopy=newJMenuItem("复制",newImageIcon(kit.getImage("018.gif")));
copy.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
jtc.copy();
}
});
JMenuItemcut=newJMenuItem("剪切",newImageIcon(kit.getImage("018.gif")));
cut.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
jtc.cut();
}
});
JMenuItemcopyall=newJMenuItem("全部选中并复制",newImageIcon(kit.getImage("018.gif")));
copyall.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
jtc.selectAll();
jtc.copy();
}
});
JMenuItempaste=newJMenuItem("粘贴",newImageIcon(kit.getImage("018.gif")));
paste.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
jtc.paste();
}
});
JMenuItemselectall=newJMenuItem("全部选中",newImageIcon(kit.getImage("018.gif")));
selectall.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
jtc.selectAll();
}
});
//setBorderPainted(false);
this.add(copy);
//this.addSeparator();
this.add(cut);
this.addSeparator();
this.add(selectall);
this.add(copyall);
this.addSeparator();
this.add(paste);
}
}
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.util.*;
publicclassCodeCreateextendsJFrame
{
privateArrayListfieldList;
privateJPopupMenupop;
publicCodeCreate()
{
this.setTitle("代码生成器");
fieldList=newArrayList();
JPanelp=newJPanel();
p.setLayout(newBorderLayout());
finalJTextAreaarea=newJTextArea(30,50);
area.setTabSize(4);
area.addMouseListener(newMouseAdapter()
{
publicvoidmouseReleased(MouseEvente)
{
//System.out.println(e.isPopupTrigger());
if(e.isPopupTrigger())
{
pop=newMousePopMenu(area);
//pop.setLabel("弹出菜单");
pop.show(area,e.getX(),e.getY());
//System.out.println(pop.getLabel());
}
}
});
JScrollPanejsp=newJScrollPane(area);
JLabellname=newJLabel("类名");
finalJTextFieldname=newJTextField(10);
JLabelltype=newJLabel("类型");
finalJTextFieldtype=newJTextField(10);
type.addMouseListener(newMouseAdapter()
{
publicvoidmouseEntered(MouseEvente)
{
type.setFocusable(true);
type.setFocusTraversalKeysEnabled(true);
type.selectAll();
}
});
JLabellfield=newJLabel("类变量");
finalJTextFieldfield=newJTextField(10);
finalJTextAreafieldArea=newJTextArea();
fieldArea.setEditable(false);
fieldArea.setLineWrap(true);
fieldArea.setForeground(Color.pink);
JScrollPanefieldjsp=newJScrollPane(fieldArea);
JButtonadd=newJButton("增加类变量");
JButtoncreate=newJButton("生成代码");
JButtonclear=newJButton("清除所有");
clear.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
fieldList.clear();
fieldArea.setText("");
area.setText("");
}
});
add.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
addField(field,type,fieldArea);
}
});
field.addKeyListener(newKeyAdapter()
{
publicvoidkeyReleased(KeyEvente)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
addField(field,type,fieldArea);
}
}
});
create.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Stringclassname=name.getText().trim();
Stringclassf="publicclass"+classname+"\n{\n";
Strings="";//所有的私有类变量
Stringmethod="";//所有的set和get方法
Stringconstr="public"+classname+"()\n{\n}\n";//空的构造器
StringconstrByarg="";//构造器里面的参数
StringmethodInConstr="";//构器里面调用的方法
for(inti=0;i { VarCodevar=(VarCode)fieldList.get(i); StringvarType=var.getType(); StringvarField=var.getField(); //类变量 s=s+"private"+varType+""+varField+";\n"; constrByarg=constrByarg+varType+""+varField+","; methodInConstr=methodInConstr+"this.set"+VarCode.toFirsttoUpper(varField)+"("+varField+");\n"; //方法 method=method+"publicvoidset"+VarCode.toFirsttoUpper(varField)+"("+varType+""+varField+")\n{\n"+""+"this."+varField+"="+varField+";\n}\n" +"public"+varType+"get"+VarCode.toFirsttoUpper(varField)+"()\n{\n"+""+"returnthis."+varField+";\n}\n"; } constrByarg=constrByarg.substring(0,constrByarg.lastIndexOf(",")); constrByarg="public"+classname+"("+constrByarg+")\n{\n"+methodInConstr+"}\n"; Stringclassl="}\n"; area.setForeground(Color.blue); area.setFont(newFont("CourierNew",Font.PLAIN,13)); area.setText(classf+s+constr+constrByarg+method+classl); } }); JPanelfieldPanel=newJPanel(newBorderLayout()); fieldPanel.add(fieldjsp,BorderLayout.CENTER); fieldPanel.add(newJLabel("已搞定的类变量"),BorderLayout.NORTH); JPanelbuttonPanel=newJPanel(); buttonPanel.add(lname); buttonPanel.add(name); buttonPanel.add(ltype); buttonPanel.add(type); buttonPanel.add(lfield); buttonPanel.add(field); buttonPanel.add(add); buttonPanel.add(create); buttonPanel.add(clear); p.add(jsp,BorderLayout.CENTER); p.add(fieldPanel,BorderLayout.EAST); p.add(buttonPanel,BorderLayout.SOUTH); this.setSize(800,650); this.getContentPane().add(p); } publicstaticvoidmain(Stringar[]) { CodeCreatec=newCodeCreate(); c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); c.setVisible(true); } privatevoidaddField(JTextFieldfield,JTextFieldtype,JTextAreafieldArea) { Stringstr_field=field.getText().trim(); Stringstr_type=type.getText().trim(); if(! isEmp(str_field)&&! isEmp(str_type)) { VarCodevar=newVarCode(); var.setField(str_field); var.setType(str_type); fieldList.add(var); fieldArea.append(str_type+""+str_field+";\n"); field.setText(""); } } publicstaticbooleanisEmp(Stringstr) { if(str==null||str.trim().equals("")) { returntrue; } else { returnfalse; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码 生成器