华北科技学院计算机系综合性实验实验报告课程名称Java程序设计B实验学期2011 至2012 学年第 1 学期学生所在系部计算机学院年级2009 专业班级网络学生姓名学号任课教师李芙玲实验成绩计算机系制《Java程序设计B》课程综合性实验报告实验题目简易写字板软件设计一、实验目的通过编写Java的应用系统综合实例——简易写字板软件,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
熟悉在集成开发环境下编写Java程序。
二、设备与环境硬件:多媒体计算机软件:Windows 2000以上的操作系统、JDK开发包、集成开发环境三、实验内容总体要求:程序功能基本完成,用户界面友好,代码的可维护性和可扩展性较好,最好包括必要的注释和相应的文档。
具体要求:基本的文本录入,字符修改,删除,换行,粘贴,复制,剪切等功能,主要包括:1.菜单栏设计及功能实现:菜单栏主要包括文件、编辑、格式、帮助等常见菜单。
其中文件菜单有新建、打开、保存、另存为、退出等功能;编辑菜单有剪切、复制、粘贴、等功能;格式菜单含有对文字字体、字型、字号及颜色等的设置功能,根据情况可在编辑菜单添加查找和查找替换功能。
2.编辑区设计:对文本的编辑处理区。
3.工具栏设计:可根据需要增加该项功能。
4.其他功能设计。
四、实验结果及分析1.主界面的设计与实现整个界面包括菜单条,菜单项(文件,编辑,格式,查看,帮助)和菜单条,滚动条本程序共设计了五个菜单,分别是文件菜单(新建,打开,保存,另存为,退出);编辑菜单(撤销,剪切,复制,粘贴,删除,全选,时间)格式菜单(自动换行,字体)查看菜单(状态栏)帮助(查看帮助,关于记事本)文件菜单功能编辑菜单功能格式菜单的功能帮助菜单的功能编辑区添加了文本区,并在文本区内添加了滚动条,在文本区内添加了鼠标操作,即鼠标右键进行复制,粘贴,剪切2.各项功能的实现(1)窗体设计:设计了一个大小可变,名为记事本的窗体,并添加了窗体关闭事件,即关闭窗体时会提示是否保存menu1=new JMenu("文件");(this);menu2=new JMenu("编辑");menu3=new JMenu("格式");menu4=new JMenu("查看");menu5=new JMenu("帮助");(menu1);(menu2);(menu3);(menu4);(menu5); 添加窗体上的菜单addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent event){if(save_status==0){int check=(null,"文件的文字已经改变。
想保存文件吗?","警告",;if(check==0){saveFile(status);}if(check==1){(0);}if(check==2){dispose();}}}});(2)文件菜单各项功能1.新建功能设计:item1是新建菜单,在item1上添加监听器,当执行新建操作时,自动设置文本区为空i(new ActionListener(){public void actionPerformed(ActionEvent e){if()==item1){("");("无标题 - 记事本");}}2.打开功能设计:item2上添加监听器,当执行打开操作时运用文件的输入流进行打开JfileChooser jfc1=new JfileChooser(”D:/”)FileReader fr = new FileReader(f1);BufferedReader br = new BufferedReader(fr);调用showOpenDialog()方法返回初始目录为本地系统的默认目录的对话框while((str = ())!=null){(str);}();();调用readLine()顺序读取文件的一行运行结果如图3.保存功能,和打开功能相反,iten3添加监听器,当执行保存操作时运用文件输出流把文件保存到指定目录中JfileChooser jfc1=new JfileChooser()FileWriter fw = new FileWriter(f2);BufferedWriter bw = new BufferedWriter(fw);将BufferedReader和FileReader连接在一起,然后使用BufferedReader流将数据写入到目的地。
4.编辑中的复制,粘贴,剪切功能item**.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.**();}});添加ActionListener监听器,调用API中的copy(),cut(),prase()方法复制粘贴剪切可从鼠标右键使用,构造一个弹出式菜单menu= new JpopupMenu() 为text添加鼠标监听器(new MouseAdapter(){ 示时间,为日期添加日历(new ActionListener(){public void actionPerformed(ActionEvent e){if()==item27){Calendar c1 =();int y = ;int m = ;int d = ;int h = ;int m1 = ;int m2 = m+1;(y+"年"+m2+"月"+d+"日"+h+":"+m1);}}});6自动换行功能(new ActionListener(){public void actionPerformed(ActionEvent e) {if().equals(" 自动换行")){(" √自动换行" );(true);}四、心得体会实验完成了基本功能,能进行基本的操作。
做完实验的第一感受是乱,在实验中按照系统提示添加了很多东西,如添加菜单条,菜单项,菜单,文本区等觉得都比较熟练,在查阅了网上和书上别人代码后,也根据自己的理解实现了打开,新建和保存功能,但是对于字体的设计我确实没有自己完成,在运用别人的代码后因为定义,结构等不匹配也很苦恼,自己修改了好久,找了很多同学帮忙才运行成功。
这次实验让我对所学的知识运用更加熟练,也让我对JA V A有了更深的喜爱,虽然我能掌握的知识很少,但是在以后的时间我会更加认真的学习JA V A,我觉得在所学的专业课中,终于找到一个自己感兴趣的,虽然学的没有别人好,我相信我会学好的。
package me;import .*;import .*;import .*;import class FirstWindow {public static void main(String args[]){new FWindow("记事本");}}class FWindow extends JFrame implements ActionListener,WindowListener,ItemListener { public static Frame frame;JMenuBar menubar;JPopupMenu menu;JMenu menu1,menu2,menu3,menu4,menu5;JMenuItemitem1,item2,item3,item4,item5,item21,item22,item23,item24,item25,item26,item27,item31,item32,ite m41,item51,item52;JMenuItem itemCopy,itemCut,itemPaste;JTextArea text;JScrollPane scrollPane;JComboBox listFont,listFSize;int save_status = 0,status=0,huanhang_count=0;FWindow(String s){addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent event){if(save_status==0){int check=(null,"文件的文字已经改变。
想保存文件吗?","警告",;if(check==0){saveFile(status);}if(check==1){(0);}if(check==2){dispose();}}}});setTitle("记事本");setSize(700,400);setLocation(120,120);menubar=new JMenuBar();setJMenuBar(menubar);text=new JTextArea();scrollPane=new JScrollPane(text); .");(new ActionListener(){public void actionPerformed(ActionEvent e){if()==item2){File f1;JFileChooser jfc1 = new JFileChooser("D:/");int num1 = (null);if(num1=={try{f1 = ();());FileReader fr = new FileReader(f1);BufferedReader br = new BufferedReader(fr);String str;while((str = ())!=null){(str);}();();}catch(FileNotFoundException e1){();}catch(IOException e2){();}}private void setTitle(String name) {}});item3=new JMenuItem("保存");(new ActionListener(){public void actionPerformed(ActionEvent e){if()==item3){File f2 = null;JFileChooser jfc2 = new JFileChooser();int num2 = (null);if(num2=={f2=();());try{FileWriter fw = new FileWriter(f2);BufferedWriter bw = new BufferedWriter(fw);());();();}catch(IOException e2){();}}}}item5=new JMenuItem("退出");(new ActionListener(){public void actionPerformed(ActionEvent e){if()==item4){int a = (null,"文件已被改变,是否要保存?","提示",;if(a==1){();}else if(a==0){File f2 = null;JFileChooser jfc2 = new JFileChooser();int num2 = (null);if(num2=={f2=();());try{FileWriter fw = new FileWriter(f2);BufferedWriter bw = new BufferedWriter(fw);());();();}catch(IOException e2){();}();}}}private void setTitle(String name) {quals(" 自动换行")){(" √自动换行" );(true);}else {(" 自动换行" );(false);}}});item41=new JMenuItem("状态栏"); //查看菜单下菜单项的创建('S'));(item41);item51=new JMenuItem("查看帮助"); //帮助菜单下菜单项的创建item52=new JMenuItem("关于记事本");('A'));(item51);(item52);(new ActionListener(){public void actionPerformed(ActionEvent e) {();}});public void actionPerformed(ActionEvent e) {();}});(new ActionListener() {public void actionPerformed(ActionEvent e) {();}});(new MouseAdapter(){ //鼠标右键实现复制,粘贴,剪切功能public void mousePressed(MouseEvent e){if()==(text,(),());}});JMenuItem cut = new JMenuItem("剪切(T)"); //添加右键菜单JMenuItem copy = new JMenuItem("复制(C)");JMenuItem paste = new JMenuItem("粘贴(P)");(copy);(cut);(paste);/*--------------按钮事件-----------------*/(new ActionListener() {public void actionPerformed(ActionEvent e) {();}});(new ActionListener() {public void actionPerformed(ActionEvent e) {}});(new ActionListener() {public void actionPerformed(ActionEvent e) {();}});setVisible(true);} // FWindow()方法结束protected void saveFile(int status2) {// TODO Auto-generated method stub}class StyleDialog extends JDialog{JLabel ziti,zixing,daxiao;JPanel style,myshili;JTextArea shili;JButton ok,cancel;JList zitiList,zixingList,daxiaoList;JTextField myziti,myzixing,mydaxiao;String mystyle[]={"Arial","Elephant","Forte","宋体","华文行楷","黑体","华文彩云","华文仿宋","楷书_GB2312","隶书","华文中宋"};String myxingzhuang[]={"常规","斜体","粗体","粗斜体"};String mypounds[]={"9","10","11","12","13","14","15","16","17","18"};String daxiao_check,style_check,ziti_check;StyleDialog(JTextArea text){//setTitle("字体");(false);;Container container=getContentPane();(null);ziti=new JLabel("字体");(new Font("Monospaced",,12));(10,10,50,20);myziti=new JTextField("宋体");(false);;(10, 35, 100, 20);zitiList=new JList(mystyle);(3);(new Font("Monospaced",,12));(5);;(new ListSelectionListener(){public void valueChanged(ListSelectionEvent event) {(mystyle[()]);ziti_check=();style_check=();daxiao_check=();int zitistyle=;if("常规"))zitistyle=;if("斜体"))zitistyle=;if("粗体"))zitistyle=;if("粗斜体"))zitistyle=+;(new Font(ziti_check,zitistyle,zitidaxiao)); }});JScrollPane scroll=new JScrollPane(zitiList);(10, 60,100 ,100);zixing=new JLabel("字形");(new Font("Monospaced",,12));(120, 10, 50, 20);myzixing=new JTextField("常规");(false);;(120, 35, 100, 20);zixingList=new JList(myxingzhuang);(0);(new Font("Monospaced",,12));(5);(new ListSelectionListener(){public void valueChanged(ListSelectionEvent event) {(myxingzhuang[()]);ziti_check=();style_check=();daxiao_check=();int zitidaxiao=(daxiao_check);int zitistyle=;if("常规"))zitistyle=;if("斜体"))zitistyle=;if("粗体"))zitistyle=;if("粗斜体"))zitistyle=+;(new Font(ziti_check,zitistyle,zitidaxiao));}});JScrollPane scroll2=new JScrollPane(zixingList); (120, 60,100 ,80);daxiao=new JLabel("大小");(new Font("Monospaced",,12));(230, 10, 50, 20);mydaxiao=new JTextField("12");(false);;(230, 35, 50, 20);daxiaoList=new JList(mypounds);(3);(new Font("Monospaced",,12));(5);;(new ListSelectionListener(){public void valueChanged(ListSelectionEvent event) {(mypounds[()]);ziti_check=();style_check=();daxiao_check=();int zitidaxiao=(daxiao_check);int zitistyle=;if("常规"))zitistyle=;if("斜体"))zitistyle=;if("粗体"))zitistyle=;if("粗斜体"))zitistyle=+;}});JScrollPane scroll3=new JScrollPane(daxiaoList); (230, 60,50 ,80);ok=new JButton("确定");cancel=new JButton("取消");(new Font("Monospaced",,12));(new Font("Monospaced",,12));(290, 35, 60, 20);(290,60,60,20);(new ActionListener(){public void actionPerformed(ActionEvent e) {dispose();}});(new ActionListener(){public void actionPerformed(ActionEvent e) {ziti_check=();style_check=();daxiao_check=();int zitidaxiao=(daxiao_check);int zitistyle=;if("常规"))zitistyle=;if("斜体"))zitistyle=;if("粗体"))zitistyle=;zitistyle=+;(new Font(ziti_check,zitistyle,zitidaxiao));dispose();}});(ziti);(myziti);(scroll);(zixing);(myzixing);(scroll2);(daxiao);(mydaxiao);(scroll3);(ok);(cancel);setSize(360, 300);setVisible(true);}}public void actionPerformed(ActionEvent arg0) {}public void windowActivated(WindowEvent arg0) {}}public void windowClosing(WindowEvent arg0) {}public void windowDeactivated(WindowEvent arg0) {}public void windowDeiconified(WindowEvent arg0) {}public void windowIconified(WindowEvent arg0) {}public void windowOpened(WindowEvent arg0) {}public void itemStateChanged(ItemEvent arg0) {}}。