java记事本课程设计

更新时间:2023-08-24 20:13:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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();

java 课程设计 记事本

else if(obj==printItem) doPrint(); else if(obj==openItem) doOpen(); else if(obj==cutItem) doCut(); else if(obj==copyItem) doCopy(); else if(obj==pasteItem) doPaste();

else if(obj==selectallItem) doSelectAll(); else if(obj==dateItem) doDateTime(); else if(obj==wrapItem) doWrap(); else if (obj==findItem) doFind(); else if (obj==fontItem) doChangeFont(); else if (obj==aboutItem) doabout(); }

//当用户按下窗口的“关闭”时,会自动调用此方法 protected void processWindowEvent(WindowEvent e){

if (e.getID() == WindowEvent.WINDOW_CLOSING) doExit(); }

//监听文本内容的改变事件

public void changedUpdate(DocumentEvent e){ //不需要动作 }

public void insertUpdate(DocumentEvent e){ changed=true; }

public void removeUpdate(DocumentEvent e){ changed=true; }

//监听鼠标事件

class handleMouse extends MouseAdapter{

java 课程设计 记事本

public void mouseReleased(MouseEvent e) {chkText();} }

//监听键盘事件

class handleKey extends KeyAdapter{

public void keyPressed(KeyEvent e) {chkText();} }

//根据用户选择文本的情况,修改菜单的状态 void chkText(){

if(text.getSelectedText()==null){ cutItem.setEnabled(false); copyItem.setEnabled(false); }else{

cutItem.setEnabled(true);

copyItem.setEnabled(true); } }

//程序退出时的代码 void doExit(){ int select; if (!changed)

System.exit(0); else{

select=JOptionPane.showConfirmDialog(this,"文件修改后尚未存盘,要保存吗?"); switch (select){

case JOptionPane.YES_OPTION: select=doSave();

if (select==1)System.exit(0); break;

case JOptionPane.NO_OPTION: System.exit(0); break;

case JOptionPane.CANCEL_OPTION: break; } } }

//保存用户编辑的文件,保存成功返回1,否则返回0 int doSave(){

FileOutputStream fout; byte content[]; int flag;

java 课程设计 记事本

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; }

//用"另存为"对话框保存文件。保存成功返回1,否则返回0 int doSaveAs(){

FileOutputStream fout; byte content[]; int flag=0;

File tmpfile=null;

ExampleFileFilter filter = new ExampleFileFilter(); JFileChooser chooser;

filter.addExtension("txt");

filter.setDescription("文本文件"); if (file!=null)

chooser = new JFileChooser(file.getPath()); else

chooser = new JFileChooser(); chooser.setFileFilter(filter);

flag = chooser.showSaveDialog(this);

if(flag == JFileChooser.APPROVE_OPTION) { tmpfile=chooser.getSelectedFile(); if (tmpfile.exists()){

if (JOptionPane.showConfirmDialog(this,"文件已经存在,是否覆盖?",

本文来源:https://www.bwwdw.com/article/gqli.html

Top