java记事本课程设计
发布时间:2024-08-27
发布时间:2024-08-27
java 课程设计 记事本
JAVA语言课程设计报告
题 目:记事本的制作 设 计 者: 刘兴钢 专业班级:信管07—班 学 号:310709030218 指导教师: 申艳梅
2010年 12 月 24 日
河南理工大学计算机学院
java 课程设计 记事本
目录
1、系统需求分析 ................................................................................................................................... 3 2.系统总体设计 ................................................................................................................................... 3 3 系统详细设计 ..................................................................................................................................... 5 4软件测试 ............................................................................................................................................ 13 5 系统总结 ........................................................................................................................................... 13 6系统设计心得体会 ............................................................................................................................ 13 7参考文献 ............................................................................................................................................ 13
java 课程设计 记事本
1、系统需求分析
1.1系统名称:
Window记事本 1.2系统介绍:
开发一个window记事本,主要有一个主界面及以下功能: 1:文件的新建,打开,保存,打印,另存等; 2:对文件的编辑,如全选,复制,剪切,粘贴等; 3:对文件的格式操作,如自动换行,字体等; 4:帮助,包括帮助主题,关于。 1.3开发环境 Eclipse
2.系统总体设计
2.1 系统功能结构图
2.2系统文件结构图
java 课程设计 记事本
2.3系统编辑结构图
2.4系统格式、帮助结构图
java 课程设计 记事本
3 系统详细设计
3.1.主界面
主界面主要是用于对选择相应的功能进行相应的功能,主界面主要包括文件,编辑,格式,帮助四个下拉菜单功能。
重要代码:
①创建界面,安装各种监听器
public Notebook() {
setTitle("记事本 -- 刘兴钢"); con=getContentPane(); text=new JTextArea();
java 课程设计 记事本
JSPane=new JScrollPane(text); createMenu();
createPopupMenu();
setJMenuBar(mainMenuBar);
con.add(JSPane,BorderLayout.CENTER); text.setComponentPopupMenu(popMenu);
text.getDocument().addDocumentListener(this); text.addKeyListener(new handleKey()); text.addMouseListener(new handleMouse()); setSize(400,300);
setVisible(true);
② 菜单代码
public void createMenu(){
//创建JMenuBar
mainMenuBar=new JMenuBar(); //创建四个JMenu
fileMenu=new JMenu("文件"); editMenu=new JMenu("编辑"); formatMenu=new JMenu("格式"); helpMenu=new JMenu("帮助");
3.2.字体设计界面
主要代码
import java.awt.event.*; import javax.swing.*;
import javax.swing.event.*; import java.awt.*;
public class fontDialog extends JDialog implements ActionListener,ListSelectionListener{
java 课程设计 记事本
public static final int Cancle=0; public static final int OK=1;
public static final String [] style={"正常","斜体","粗体","粗斜体"}; public static final String [] size={"8","9","10","11","12","14","16", "18","20","22","24","26","28","36","48","72"};
private Font userFont=null; private int userSelect=Cancle; private JFrame parent=null; private Container con;
private JScrollPane nameSPane,styleSPane,sizeSPane; private JPanel panel[];
private JLabel nameLbl,styleLbl,sizeLbl; private JTextField nameText,styleText,sizeText; private JList nameList,styleList,sizeList; private JButton OKBtn,cancleBtn;
public fontDialog() { this(null); }
public fontDialog(JFrame owner){ super(owner,true); parent=owner; setTitle("字体"); con=getContentPane();
BoxLayout box=new BoxLayout(con,BoxLayout.Y_AXIS); con.setLayout(box); panel=new JPanel[4]; for(int i=0;i<3;i++){
panel[i]=new JPanel();
panel[i].setLayout(new GridLayout(1,3)); }
panel[3]=new JPanel();
panel[3].setLayout(new FlowLayout());
nameLbl=new JLabel("字体"); styleLbl=new JLabel("字形"); sizeLbl=new JLabel("大小"); panel[0].add(nameLbl); panel[0].add(styleLbl); panel[0].add(sizeLbl);
nameText=new JTextField("宋体");
java 课程设计 记事本
nameText.setColumns(5);
nameText.setEditable(false);
styleText=new JTextField("正常"); styleText.setColumns(5);
styleText.setEditable(false); sizeText=new JTextField("12"); sizeText.setColumns(5);
sizeText.setEditable(false); panel[1].add(nameText); panel[1].add(styleText); panel[1].add(sizeText);
GraphicsEnvironment eq = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] availableFonts= eq.getAvailableFontFamilyNames(); nameList=new JList(availableFonts);
nameList.addListSelectionListener(this); nameSPane=new JScrollPane(nameList); styleList=new JList(style);
styleList.addListSelectionListener(this); styleSPane=new JScrollPane(styleList); sizeList=new JList(size);
sizeList.addListSelectionListener(this); sizeSPane=new JScrollPane(sizeList); panel[2].add(nameSPane); panel[2].add(styleSPane); panel[2].add(sizeSPane);
OKBtn=new JButton("确定"); OKBtn.addActionListener(this); cancleBtn=new JButton("取消"); cancleBtn.addActionListener(this); panel[3].add(OKBtn); panel[3].add(cancleBtn);
for(int i=0;i<4;i++) con.add(panel[i]); }
public int showFontDialog(){ setSize(300,300); int x,y;
if (parent!=null){
x=parent.getX()+30; y=parent.getY()+30;
java 课程设计 记事本
}else{ x=150; y=100; }
setLocation(new Point(x,y)); setVisible(true); return userSelect; }
public Font getFont(){ return userFont; }
public void actionPerformed(ActionEvent e){ int styleIndex=Font.PLAIN,fontSize; if(e.getSource()==OKBtn){
if(styleText.getText().equals("正常")) styleIndex=Font.PLAIN;
if(styleText.getText().equals("斜体")) styleIndex=Font.ITALIC;
if(styleText.getText().equals("粗体")) styleIndex=Font.BOLD;
if(styleText.getText().equals("粗斜体")) styleIndex=Font.BOLD | Font.ITALIC;
fontSize=Integer.parseInt(sizeText.getText());
userFont=new Font(nameText.getText(),styleIndex,fontSize); userSelect=OK; setVisible(false); }else{
userSelect=Cancle; setVisible(false); } }
public void valueChanged(ListSelectionEvent e){ if (e.getSource()==nameList)
nameText.setText((String)nameList.getSelectedValue()); if (e.getSource()==styleList)
styleText.setText((String)styleList.getSelectedValue()); if (e.getSource()==sizeList)
sizeText.setText((String)sizeList.getSelectedValue()); } }
3.3.保存界面
java 课程设计 记事本
代码
int doSave(){
FileOutputStream fout; byte content[]; int flag; if (!haveName){
flag = doSaveAs(); }else if(changed){ try{
fout=new FileOutputStream(file); content=text.getText().getBytes(); fout.write(content); fout.close(); changed=false; flag = 1;
}catch(FileNotFoundException e){
JOptionPane.showMessageDialog(this,"指定的文件名称或属性有问题!"); flag = 0;
}catch(IOException e){
JOptionPane.showMessageDialog(this,"无法写文件,请检查文件是否被锁定"); flag = 0;
} }else{
flag =1; }
return flag;
java 课程设计 记事本
}
3.4.打印设计界面
代码如下:
void doPrint(){ try{
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE; PrintService printService[] =
PrintServiceLookup.lookupPrintServices(flavor, pras); PrintService defaultService =
PrintServiceLookup.lookupDefaultPrintService(); PrintService service = null;
service = ServiceUI.printDialog(null, 100, 100, printService, defaultService, flavor, pras); if (service!=null){
DocPrintJob job = service.createPrintJob(); DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(text.getText().getBytes(), flavor, das); job.print(doc, pras); //进行文件的打印 }
}catch(Exception e){
JOptionPane.showMessageDialog(this,"打印任务无法完成"); }
java 课程设计 记事本
}
3.5.查找设计界面
代码如下:
public findDialog(JFrame owner, JTextArea Jtext) { super(owner,false); start=0; text=Jtext;
panel1=new JPanel();
panel1.setLayout(new FlowLayout()); panel2=new JPanel();
panel2.setLayout(new FlowLayout());
label1=new JLabel("查找内容"); findEdit=new JTextField(12); OKBtn=new JButton("查找下一个"); OKBtn.addActionListener(this); panel1.add(label1); panel1.add(findEdit); panel1.add(OKBtn);
checkBox=new JCheckBox("区分大小写"); checkBox.setSelected(true); upBtn=new JRadioButton("向上");
downBtn=new JRadioButton("向下",true); dirBtnGroup=new ButtonGroup(); dirBtnGroup.add(upBtn); dirBtnGroup.add(downBtn);
CancleBtn=new JButton("取消");
CancleBtn.addActionListener(this); panel2.add(checkBox); panel2.add(upBtn); panel2.add(downBtn); panel2.add(CancleBtn);
con=getContentPane();
con.setLayout(new FlowLayout()); con.add(panel1);
con.add(panel2);
java 课程设计 记事本
}
setTitle("查找"); setSize(300,120); setVisible(true);
4软件测试
软件测试成功
5 系统总结
总体来说,本次项目在规定期间顺利完成,记事本能够完成文件的编辑、保存、
剪切,复制、查询、自动换行,字体设计和打印和页面设计等的相应功能。
6系统设计心得体会
经过一个星期的我的记事本的课程设计,我在老师及同学的指导帮助下,顺利完成该课程设计。通过该课程设计,收获颇多。
首先,让我加深了对Java语言的理论知识的理解;
其次,让我更加熟练的掌握了Java语言的设计能力并且有了实践经验; 再次,在设计过程中,学到了老师没有在课堂上没有教授的知识; 最后,加强了我对Java语言的学习兴趣和好感。
7参考文献
[1] 耿详义,张跃平. Java 2 实用教程. 北京:清华大学出版社,2004.2 [2] 张利国.Java实用教程案例.北京:清华大学出版社,2003.10
[3] 周晓聪,等.面向对象程序设计与Java语言.北京:机械工业出版社,2004.3 [4] 李尊朝.Java语言程序设计.北京:中国铁道出版社,2004.2
[5] (美)Philip http://www.77cn.com.cnplate Java 2 Certification Study Guide Fourth
Edition(Java 2 证学习指南) (第四版 英文版). 北京:电子工业出版社,2004.1 附录:程序清单
import java.awt.*;
import java.awt.event.*; import javax.swing.*; import java.io.*;
import javax.swing.event.*; import javax.print.*;
import javax.print.attribute.*; import java.util.*; import java.text.*;
public class Notebook extends JFrame implements ActionListener,DocumentListener{ Container con; JScrollPane JSPane;
java 课程设计 记事本
JTextArea text;
JMenuBar mainMenuBar;
JMenu fileMenu,editMenu,formatMenu,helpMenu;
JMenuItem newItem,openItem,saveItem, saveasItem,pageItem,printItem,exitItem;
JMenuItem undoItem,cutItem,copyItem,pasteItem,findItem,replaceItem,selectallItem,dateItem; JCheckBoxMenuItem wrapItem; JMenuItem fontItem;
JMenuItem helpItem,aboutItem; JPopupMenu popMenu;
fontDialog myFontDialog=null; boolean changed=false; boolean haveName=false; File file=null; //主程序入口
public static void main(String[] args) { new Notebook(); }
//创建界面、安装各种监听器、 public Notebook() {
setTitle("记事本 -- 刘兴钢"); con=getContentPane(); text=new JTextArea();
JSPane=new JScrollPane(text); createMenu();
createPopupMenu();
setJMenuBar(mainMenuBar);
con.add(JSPane,BorderLayout.CENTER); text.setComponentPopupMenu(popMenu);
text.getDocument().addDocumentListener(this); text.addKeyListener(new handleKey());
text.addMouseListener(new handleMouse()); setSize(400,300);
setVisible(true); }
//创建主菜单
public void createMenu(){ //创建JMenuBar
mainMenuBar=new JMenuBar(); //创建四个JMenu
fileMenu=new JMenu("文件"); editMenu=new JMenu("编辑"); formatMenu=new JMenu("格式"); helpMenu=new JMenu("帮助");
//创建JMenuItem并添加到对应的JMenu中
java 课程设计 记事本
newItem=new JMenuItem("新建"); openItem=new JMenuItem("打开.."); saveItem=new JMenuItem("保存.."); saveasItem=new JMenuItem("另存为.."); pageItem=new JMenuItem("页面设置.."); printItem=new JMenuItem("打印.."); exitItem=new JMenuItem("退出"); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.add(saveItem); fileMenu.add(saveasItem); fileMenu.addSeparator(); fileMenu.add(pageItem); fileMenu.add(printItem); fileMenu.addSeparator(); fileMenu.add(exitItem);
mainMenuBar.add(editMenu);
undoItem=new JMenuItem("撤消"); cutItem=new JMenuItem("剪切"); copyItem=new JMenuItem("复制"); pasteItem=new JMenuItem("粘贴"); findItem=new JMenuItem("查找.."); replaceItem=new JMenuItem("替换.."); selectallItem=new JMenuItem("全选"); dateItem=new JMenuItem("时间/日期"); editMenu.add(undoItem); editMenu.addSeparator(); editMenu.add(cutItem); editMenu.add(copyItem); editMenu.add(pasteItem); editMenu.addSeparator(); editMenu.add(findItem); editMenu.add(replaceItem); editMenu.addSeparator(); editMenu.add(selectallItem); editMenu.add(dateItem);
mainMenuBar.add(formatMenu);
wrapItem=new JCheckBoxMenuItem("自动换行"); fontItem=new JMenuItem("设置字体.."); formatMenu.add(wrapItem); formatMenu.add(fontItem);
java 课程设计 记事本
helpItem=new JMenuItem("帮助主题"); aboutItem=new JMenuItem("关于.."); helpMenu.add(helpItem); helpMenu.add(aboutItem);
exitItem.addActionListener(this); saveItem.addActionListener(this); saveasItem.addActionListener(this); newItem.addActionListener(this); printItem.addActionListener(this); openItem.addActionListener(this); cutItem.addActionListener(this); copyItem.addActionListener(this); pasteItem.addActionListener(this); selectallItem.addActionListener(this); dateItem.addActionListener(this); wrapItem.addActionListener(this); findItem.addActionListener(this); fontItem.addActionListener(this); }
//创建弹出式菜单
public void createPopupMenu(){ popMenu=new JPopupMenu(); popMenu.add("撤消"); popMenu.addSeparator(); popMenu.add("剪切"); popMenu.add("复制"); popMenu.add("粘贴"); popMenu.addSeparator(); popMenu.add("全选"); }
public void actionPerformed(ActionEvent e){ Object obj;
obj=e.getSource(); if (obj==exitItem) doExit(); else if(obj==saveItem) doSave();
else if(obj==saveasItem) doSaveAs(); else if(obj==newItem) doNewFile();