收藏 分享(赏)

Java语言程序设计报告.doc

上传人:dzzj200808 文档编号:2703243 上传时间:2018-09-25 格式:DOC 页数:20 大小:344KB
下载 相关 举报
Java语言程序设计报告.doc_第1页
第1页 / 共20页
Java语言程序设计报告.doc_第2页
第2页 / 共20页
Java语言程序设计报告.doc_第3页
第3页 / 共20页
Java语言程序设计报告.doc_第4页
第4页 / 共20页
Java语言程序设计报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、Java 语言程序设计报告班级: 08 计科 3 班 学号: 20081003258 姓名: 唐 翰 成绩: 2011 年 1 月(武汉) Java 课程设计 1/20记事本程序一、实验要求编写一个记事本程序要求: 用图形用户界面实现。 能实现编辑、保存、另存为、查找替换等功能。 提示:使用文件输入输出流。二、实验背景“记事本”的功能虽然连“ 写字板 ”都比不上,但它还是有它自己的独门绝技的。下面我们就来看看记事本吧。相对于微软的 Word 来说“记事本”的功能确实是太单薄了,只有:新建,保存,打印,查找,替换这几个功能。但是“记事本”却拥有一个 Word 不可能拥有的优点:打开 速度快,文件

2、小。我相信对于这一点大家一定是深有感触地,一点就打开;同样的文本文件用 Word 保存和用记事本保存的文件大小就大不相同,所以对于大小在 64KB 以下的纯文本的保存最好还是采用记事本。 记事本另一项不可取代的功能是:可以保存无格式文件。你可以把记事本编辑的文件保存为:“.html”, “.java”, “.asp”等等任意格式。这使得“记事本”又找到了一个新的用途:作为程序语言的编辑器。翻开任何一本介绍一门编程语言的入门教材,里面都会建议学生在记事本中编写源程序。在此我们利用 Java 的文件输入输入流来实现简单的记事本小程序。三、运行环境系统:Microsoft XP SP3软件:Ecli

3、pse 四、概要设计设计两个类,一个 Notepad 类继承 JFrame 类,然后在 Notepad 类中添加文件打开,新建,保存等方法,就可以直接在编译器中运行程序。1:界面设计在主界面中设计一个新建对象 Notepad,由 Notepad 继续自 JFrame,故得到 Notepad 容器,并在其中加入一个下拉菜单和一个文本域控件,把该容器设置为 GridLayout(2,1)布局。2:功能设计在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。点击不同菜单项时,显示不同界面。3:代码设计编写每个控件的相关代码,并进行调试。五、详细代码1:界面设计创建一个下拉菜单和文本域,在文本

4、域中显示编辑的文件信息。JMenu fileMenu=new JMenu(“文件(F)“) ;(武汉) Java 课程设计 2/20JMenuItem newItem=new JMenuItem(“新建“ );JMenuItem openItem=new JMenuItem(“打开.“);JMenuItem saveItem=new JMenuItem(“另存为.“);JMenuItem copyItem=new JMenuItem(“复制“);JMenuItem tieItem=new JMenuItem(“粘贴“);JMenuItem aboutItem=new JMenuItem(“关于

5、程序“);JMenuItem exitItem= new JMenuItem(“退出“);JMenu formatMenu=new JMenu(“设置(S)“);String colors=“黑色“,“ 蓝色“,“红色“,“ 绿色“,“粉色“,“桔黄色“;JMenu colorMenu=new JMenu(“颜色“);JMenu sizeMenu=new JMenu(“大小“);String size=“10“,“16“,“24“,“36“;String fontNames=“幼圆“,“微软雅黑“,“ 隶书“,“楷体_GB2312“, “华文新魏“;JMenu fontMenu=new JMe

6、nu(“字体“);String styleNames=“加黑“,“ 斜体“;JMenu FindMenu = new JMenu(“查找(T)“);FindMenu.setMnemonic(T);JMenuItem searchMenu = new JMenuItem(“查找“);JMenuItem replaceMenu = new JMenuItem(“替换“);JMenu lookMenu=new JMenu(“查看(L)“);/设置菜单项JMenuItem taiItem=new JMenuItem(“状态栏“ );JMenu helpMenu=new JMenu(“帮助(H)“);

7、/设置菜单项JMenuItem helpItem=new JMenuItem(“帮助主题“);helpMenu.add(helpItem);helpMenu.addSeparator();/设置分割线JMenuItem about1Item=new JMenuItem(“关于记事本.“);界面如下:(武汉) Java 课程设计 3/202 功能设计 打开窗口事件 OpenHander:class OpenHandler implements ActionListener public void actionPerformed(ActionEvent e)JFileChooser jc=new

8、JFileChooser();int rVal=jc.showOpenDialog(C3.this);/显示打开文件的对话框if(rVal=JFileChooser.APPROVE_OPTION)File dir=jc.getCurrentDirectory();File file=jc.getSelectedFile();filenameTf.setText(file.getName();dirTf.setText(dir.toString();/在文本域内显示文本文件内容contentTa.setText(read(new File(dir,file.getName();if(rVal=J

9、FileChooser.CANCEL_OPTION) filenameTf.setText(“你取消了当前选择! “);dirTf.setText(“ “);(武汉) Java 课程设计 4/20 打开时读取文字事件:private String read(File file)/打开时的读取tryBufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(file),“GBK“);String data=null;StringBuffer buffer=new StringBuffer()

10、;while(data=reader.readLine()!=null)buffer.append(data+“n“);reader.close();return buffer.toString();catch(IOException e)throw new RuntimeException(e); 保存事件 SaveHandler:(武汉) Java 课程设计 5/20class SaveHandler implements ActionListener /保存public void actionPerformed(ActionEvent e)JFileChooser jc=new JFil

11、eChooser();int rVal=jc.showSaveDialog(C3.this);/显示保存文件的对话框if(rVal=JFileChooser.APPROVE_OPTION)File dir=jc.getCurrentDirectory();File file=jc.getSelectedFile();filenameTf.setText(file.getName();dirTf.setText(dir.toString();write(new File(dir,file.getName(),contentTa.getText();if(rVal=JFileChooser.CAN

12、CEL_OPTION)filenameTf.setText(“你取消了当前选择! “);dirTf.setText(“ “);(武汉) Java 课程设计 6/20 粘贴文件:tieItem.addActionListener(new ActionListener() /响应粘贴事件public void actionPerformed(ActionEvent event)contentTa.setText(contentTa.getText()+str);); 查找替换功能:public void showFind()setTitle(“查找“);setSize(280,60);setVis

13、ible(true);public void showReplace()setTitle(“查找替换“);setSize(280,110);setVisible(true);private void find()String text=ta.getText();String str=tFind.getText();int end=text.length();int len=str.length();int start=ta.getSelectionEnd();if(start=end) start=0;for(;start=end-len;start+)if(text.substring(st

14、art,start+len).equals(str)ta.setSelectionStart(start);ta.setSelectionEnd(start+len);return;/若找不到待查字符串,则将光标置于末尾ta.setSelectionStart(end);ta.setSelectionEnd(end);public Button getBFind() return bFind;private void replace()(武汉) Java 课程设计 7/20String str=tReplace.getText();if(ta.getSelectedText().equals(

15、tFind.getText()ta.replaceRange(str,ta.getSelectionStart(),ta.getSelectionEnd();else find();六、运行结果七、源码package p1;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;public class Notepad extends JFrame /* 记事本程序*/private static final long serialVersionUID = 1L;/定义菜单项private

16、final Color colorValues=Color.BLACK,Color.BLUE,Color.RED,Color.GREEN,Color.PINK,Color.ORANGE;private JRadioButtonMenuItem colorItems,fonts,sizeItems;private JCheckBoxMenuItem styleItems;(武汉) Java 课程设计 8/20private JLabel displayLabel;private ButtonGroup fontGroup,colorGroup,sizeGroup;/创建按钮组对象,实现JRadi

17、oButton多选一功能private int style;/定义字体大小int fonti=10;Font font;/JRadioButton r1,r2,r3; /声明按钮对象ButtonGroup bg=new ButtonGroup( ); /private String str=new String();/用来存放用户当前选择的文本/private JTextFieldfilenameTf=new JTextField(),dirTf=new JTextField();private JPanel optPane=new JPanel();private JPanel navige

18、tePane=new JPanel();private JTextArea contentTa=new JTextArea(5,20);/public Notepad(String title)super(title);/设置字体大小/ r1=new JRadioButton(“10“);/r1.addActionListener(new sizeHandler();/ optPane.add(r1); /加载按钮到界面上/r2=new JRadioButton(“16“);/r2.addActionListener(new sizeHandler();/optPane.add(r2);/ r

19、3=new JRadioButton(“24“);/r3.addActionListener(new sizeHandler();/ optPane.add(r3);/ bg.add(r1); /加载按钮到按钮组/ bg.add(r2);/ bg.add(r3);/dirTf.setEditable(false); / 设置为不可编辑filenameTf.setEditable(false); /设置为不可编辑navigetePane.setLayout(new GridLayout(2,1);navigetePane.add(filenameTf); /添加navigetePane.add(

20、dirTf);(武汉) Java 课程设计 9/20Container contentPane=getContentPane();contentPane.add(optPane,BorderLayout.SOUTH);contentPane.add(navigetePane,BorderLayout.NORTH);contentPane.add(new JScrollPane(contentTa),BorderLayout.CENTER);setSize(500,300);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOS

21、E); /设置响应关闭按钮JMenu fileMenu=new JMenu(“文件(F)“) ;fileMenu.setMnemonic(F);/设置快捷键JMenuItem newItem=new JMenuItem(“新建“);fileMenu.add(newItem); newItem.addActionListener(new ActionListener()/显示消息对话框public void actionPerformed(ActionEvent event)contentTa.setText(“ “); );/JMenuItem openItem=new JMenuItem(“

22、打开.“);fileMenu.add(openItem);openItem.addActionListener(new OpenHandler();JMenuItem saveItem=new JMenuItem(“另存为.“);fileMenu.add(saveItem);fileMenu.addSeparator();/设置分割线saveItem.addActionListener(new SaveHandler();JMenuItem copyItem=new JMenuItem(“复制“);copyItem.setMnemonic(C);/设置快捷键fileMenu.add(copyI

23、tem);copyItem.addActionListener(new ActionListener() /响应复制事件public void actionPerformed(ActionEvent event)(武汉) Java 课程设计 10/20str=contentTa.getSelectedText(););/JMenuItem tieItem=new JMenuItem(“粘贴“);fileMenu.add(tieItem);tieItem.setMnemonic(V);/设置快捷键fileMenu.addSeparator();/设置分割线tieItem.addActionLis

24、tener(new ActionListener() /响应粘贴事件public void actionPerformed(ActionEvent event)contentTa.setText(contentTa.getText()+str););/JMenuItem aboutItem=new JMenuItem(“关于程序“);fileMenu.add(aboutItem);aboutItem.addActionListener(new ActionListener() /显示消息对话框public void actionPerformed(ActionEvent event)JOpti

25、onPane.showMessageDialog(Notepad.this,“这是(*_*)的记事本“,“About“,JOptionPane.PLAIN_MESSAGE););JMenuItem exitItem= new JMenuItem(“退出“);fileMenu.add(exitItem);exitItem.addActionListener( /响应退出事件new ActionListener()public void actionPerformed(ActionEvent event)System.exit(0););JMenuBar bar=new JMenuBar();se

26、tJMenuBar(bar); /在frame中设置菜单条(武汉) Java 课程设计 11/20bar.add(fileMenu);JMenu formatMenu=new JMenu(“设置(S)“);formatMenu.setMnemonic(S);String colors=“黑色“ ,“蓝色“, “红色“,“绿色“, “粉色“,“ 桔黄色“;JMenu colorMenu=new JMenu(“颜色“);JMenu sizeMenu=new JMenu(“大小“ );String size=“10“,“16“,“24“,“36“;sizeItems=new JRadioButton

27、MenuItemsize.length;sizeGroup=new ButtonGroup();/colorItems=new JRadioButtonMenuItemcolors.length;colorGroup=new ButtonGroup();ItemHandler itemHandler=new ItemHandler();for(int count=0;countcolors.length;count+)colorItemscount=new JRadioButtonMenuItem(colorscount);colorMenu.add(colorItemscount);colo

28、rGroup.add(colorItemscount);colorItemscount.addActionListener(itemHandler);colorItems0.setSelected(true);formatMenu.add(colorMenu);formatMenu.addSeparator();/设置分割线sizeItems=new JRadioButtonMenuItemcolors.length;sizeGroup=new ButtonGroup();for(int count=0;countsize.length;count+)sizeItemscount=new JR

29、adioButtonMenuItem(sizecount);sizeMenu.add(sizeItemscount);sizeGroup.add(sizeItemscount);sizeItemscount.addActionListener(itemHandler);formatMenu.add(sizeMenu);sizeItems0.setSelected(true);formatMenu.addSeparator();/设置分割线(武汉) Java 课程设计 12/20String fontNames=“幼圆“, “微软雅黑“,“隶书“, “楷体_GB2312“,“华文新魏“ ;JMe

30、nu fontMenu=new JMenu(“字体“ );fonts=new JRadioButtonMenuItemfontNames.length;fontGroup=new ButtonGroup();for(int count=0;countfonts.length;count+)fontscount=new JRadioButtonMenuItem(fontNamescount);fontMenu.add(fontscount);fontGroup.add(fontscount);fontscount.addActionListener(itemHandler);fonts0.set

31、Selected(true);fontMenu.addSeparator();/设置分割线String styleNames=“加黑“ ,“斜体“;styleItems=new JCheckBoxMenuItemstyleNames.length;StyleHandler styleHandler=new StyleHandler();for(int count=0;countstyleNames.length;count+)styleItemscount=new JCheckBoxMenuItem(styleNamescount);fontMenu.add(styleItemscount);

32、styleItemscount.addItemListener(styleHandler);formatMenu.add(fontMenu);bar.add(formatMenu);/添加到菜单项JMenu FindMenu = new JMenu(“查找(T)“);FindMenu.setMnemonic(T);JMenuItem searchMenu = new JMenuItem(“查找“);JMenuItem replaceMenu = new JMenuItem(“替换“);FindMenu.add(searchMenu);FindMenu.add(replaceMenu);sear

33、chMenu.addActionListener(new ActionListener() /显示消息对话框 public void actionPerformed(ActionEvent event)JFrame ss = new JFrame(“查找“);JLabel tt = new JLabel(“查找“);(武汉) Java 课程设计 13/20JTextField txt = new JTextField();JButton but = new JButton(“查找“);ss.setLayout(null);ss.setLocation(150,150);Dimension di

34、m = new Dimension();dim.setSize(300, 100);tt.setBounds(10,20, 40, 20);txt.setBounds(70,20,100,20);but.setBounds(190,20,80,20);but.addActionListener(new ActionListener() /显示消息对话框 public void actionPerformed(ActionEvent event)JOptionPane.showMessageDialog(Notepad.this,“查找成功了“, “查找“,JOptionPane.PLAIN_M

35、ESSAGE););ss.add(but);ss.add(txt);ss.add(tt);ss.setSize(dim);ss.setVisible(true););replaceMenu.addActionListener(new ActionListener() /显示消息对话框 public void actionPerformed(ActionEvent event)JFrame ss = new JFrame(“替换“);JLabel tt = new JLabel(“替换“);JTextField txt = new JTextField();JButton but = new J

36、Button(“替换“);ss.setLayout(null);ss.setLocation(150,150);Dimension dim = new Dimension();dim.setSize(300, 100);tt.setBounds(10,20, 40, 20);(武汉) Java 课程设计 14/20txt.setBounds(70,20,100,20);but.setBounds(190,20,80,20);but.addActionListener(new ActionListener() /显示消息对话框 public void actionPerformed(Action

37、Event event)JOptionPane.showMessageDialog(Notepad.this,“替换成功了“, “替换“,JOptionPane.PLAIN_MESSAGE););ss.add(but);ss.add(txt);ss.add(tt);ss.setSize(dim);ss.setVisible(true););bar.add(FindMenu);JMenu lookMenu=new JMenu(“查看(L)“);/ 设置菜单项JMenuItem taiItem=new JMenuItem(“状态栏“);lookMenu.add(taiItem);taiItem.a

38、ddActionListener(new ActionListener() /显示消息对话框 public void actionPerformed(ActionEvent event)JOptionPane.showMessageDialog(Notepad.this,“欢迎使用唐翰的记事本程序!“ ,“状态栏“,JOptionPane.PLAIN_MESSAGE););bar.add(lookMenu);JMenu helpMenu=new JMenu(“帮助(H)“); /设置菜单项JMenuItem helpItem=new JMenuItem(“帮助主题“);helpMenu.add

39、(helpItem);helpMenu.addSeparator();/设置分割线JMenuItem about1Item=new JMenuItem(“关于记事本.“);helpMenu.add(about1Item);bar.add(helpMenu);(武汉) Java 课程设计 15/20about1Item.addActionListener(new ActionListener()/显示消息对话框public void actionPerformed(ActionEvent event)JOptionPane.showMessageDialog(Notepad.this,“ 191

40、08320 唐翰!“ ,“关于记事本“,JOptionPane.PLAIN_MESSAGE););getContentPane().setBackground(Color.WHITE);setSize(700,500);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public static void main (String args)new Notepad(“唐翰的记事本“);class OpenHandler implements ActionListener /打开窗口事件public void acti

41、onPerformed(ActionEvent e)JFileChooser jc=new JFileChooser();int rVal=jc.showOpenDialog(Notepad.this);/显示打开文件的对话框if(rVal=JFileChooser.APPROVE_OPTION)File dir=jc.getCurrentDirectory();File file=jc.getSelectedFile();filenameTf.setText(file.getName();dirTf.setText(dir.toString();/在文本域内显示文本文件内容contentTa

42、.setText(read(new File(dir,file.getName();if(rVal=JFileChooser.CANCEL_OPTION) filenameTf.setText(“你取消了当前选择! “);dirTf.setText(“ “);(武汉) Java 课程设计 16/20class SaveHandler implements ActionListener /保存public void actionPerformed(ActionEvent e)JFileChooser jc=new JFileChooser();int rVal=jc.showSaveDialog

43、(Notepad.this);/显示保存文件的对话框if(rVal=JFileChooser.APPROVE_OPTION)File dir=jc.getCurrentDirectory();File file=jc.getSelectedFile();filenameTf.setText(file.getName();dirTf.setText(dir.toString();write(new File(dir,file.getName(),contentTa.getText();if(rVal=JFileChooser.CANCEL_OPTION)filenameTf.setText(“你

44、取消了当前选择! “);dirTf.setText(“ “);/private String read(File file)/打开时的读取tryBufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(file),“GBK“);String data=null;StringBuffer buffer=new StringBuffer();while(data=reader.readLine()!=null)buffer.append(data+“n“);reader.close();re

45、turn buffer.toString();catch(IOException e)throw new RuntimeException(e);(武汉) Java 课程设计 17/20private void write(File file,String str)/输入文件tryPrintWriter writer=new PrintWriter(new OutputStreamWriter(new FileOutputStream(file),“GBK“);writer.println(str);writer.close();catch(IOException e)throw new Ru

46、ntimeException(e);/处理事件private class ItemHandler implements ActionListenerpublic void actionPerformed(ActionEvent event)for(int count=0;countcolorItems.length;count+)if(colorItemscount.isSelected()contentTa.setForeground(colorValuescount);break;/处理字体for(int count=0;countcolorItems.length;count+)if(e

47、vent.getSource()=fontscount)contentTa.setFont(new Font(fontscount.getText(),style,fonti);break;/处理字体大小for(int count=0;countsizeItems.length;count+)if(event.getSource()=fontscount)String rbt=event.getActionCommand( );if (rbt=“10“) fonti=10;else if (rbt=“16“) fonti=16; else if(rbt=“24“) fonti=24;else fonti=36;font=new Font(displayLabel.getFont().getName(),Font.BOLD,fonti);(武汉) Java 课程设计 18/20contentTa.setFont(font);break;repaint();/处理复选菜单事件private class StyleHan

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报