2019年JAVA记事本报告及代码
- 格式:doc
- 大小:292.50 KB
- 文档页数:26
Java课程设计报告:记事本1. 引言记事本是一款常见的文本编辑工具,广泛应用于日常工作和学习中。
本文将介绍一种基于Java语言开发的简易记事本设计方案。
2. 设计思路2.1 界面设计记事本的界面应简洁明了,方便用户进行文本编辑和操作。
可以考虑使用Swing或JavaFX等图形库来创建用户界面。
2.1.1 主窗体记事本的主窗体应包含一个菜单栏和一个文本编辑区域。
菜单栏包含文件、编辑、格式等功能项,可以使用Java提供的菜单组件来实现。
2.1.2 文件操作在菜单栏的文件功能项中,应包含新建、打开、保存、另存为等操作。
这些功能可以通过文件选择对话框来实现。
2.1.3 文本编辑文本编辑区域应支持基本的编辑功能,如复制、粘贴、剪切和撤销等操作。
可以使用Java提供的文本框组件来实现。
2.2 功能设计记事本的功能设计应满足用户的基本需求,如文本编辑、保存和打开文件等。
2.2.1 文本编辑功能用户可以在文本编辑区域输入和编辑文本内容。
可以提供字体、颜色和对齐等格式设置功能。
2.2.2 文件操作功能用户可以通过菜单栏的文件功能项进行文件的新建、打开、保存和另存为等操作。
可以使用Java的文件IO功能来实现。
2.3 实现步骤2.3.1 创建主窗体首先,需要创建一个主窗体,并设置合适的大小和布局。
可以使用Swing或JavaFX提供的窗体组件来实现。
2.3.2 添加菜单栏在主窗体中添加一个菜单栏,并设置合适的菜单和菜单项。
可以使用Java提供的菜单和菜单项组件来实现。
2.3.3 添加文件操作功能在菜单栏的文件功能项中添加新建、打开、保存和另存为等功能,并实现相应的事件处理。
可以使用Java提供的文件选择对话框和文件IO功能来实现。
2.3.4 添加文本编辑功能在主窗体中添加一个文本编辑区域,并提供复制、粘贴、剪切和撤销等编辑功能。
可以使用Java提供的文本框组件和编辑功能来实现。
3. 实现代码以下是一个简单记事本的Java代码示例:import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.*;public class Notepad extends JFrame {private JTextArea textArea;private JFileChooser fileChooser;public Notepad() {setTitle("记事本");setSize(600, 400);setDefaultCloseOperation(EXIT_ON_CLOSE);createMenuBar();textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea);add(scrollPane, BorderLayout.CENTER);fileChooser = new JFileChooser();setVisible(true);}private void createMenuBar() {JMenuBar menuBar = new JMenuBar();JMenu fileMenu = new JMenu("文件");JMenuItem newMenuItem = new JMenuItem("新建");JMenuItem openMenuItem = new JMenuItem("打开");JMenuItem saveMenuItem = new JMenuItem("保存");JMenuItem saveAsMenuItem = new JMenuItem("另存为");newMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {textArea.setText("");}});openMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showOpenDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedReader reader = new BufferedReader(new FileReader(file));String line;StringBuilder content = new StringBuilder();while ((line = reader.readLine()) != null) { content.append(line).append("\n");}reader.close();textArea.setText(content.toString());} catch (IOException ex) {ex.printStackTrace();}}}});saveMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});saveAsMenuItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int result = fileChooser.showSaveDialog(Notepad.this);if (result == JFileChooser.APPROVE_OPTION) {File file = fileChooser.getSelectedFile();try {BufferedWriter writer = new BufferedWriter(new FileWriter(file));writer.write(textArea.getText());writer.close();} catch (IOException ex) {ex.printStackTrace();}}}});fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);fileMenu.add(saveAsMenuItem);menuBar.add(fileMenu);setJMenuBar(menuBar);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {@Overridepublic void run() {new Notepad();}});}}4. 总结本文介绍了一种基于Java语言开发的简易记事本设计方案。
目录摘要................................................................................................................... 错误!未定义书签。
1设计分析......................................................................................................... 错误!未定义书签。
2.概要设计....................................................................................................... 错误!未定义书签。
2.1程序设计思路..................................................................................... 错误!未定义书签。
2.2程序模块说明图................................................................................. 错误!未定义书签。
2.3程序流程图......................................................................................... 错误!未定义书签。
2.4程序相关说明..................................................................................... 错误!未定义书签。
3.程序详细设计与分析................................................................................... 错误!未定义书签。
一、实验内容实验题目:记事本应用程序设计要求:1.分析WINDOWS “记事本程序”各主要菜单项的功能,画出详细的程序流程图2.设计完整的UI ,并实现“文件”菜单中“新建”“打开”“保存”“另存为”“退出”等 主要菜单项功能3.将各主要菜单项的程序流程图及主要代码写入实验报告二、实验过程1、写出程序的程序流程图,主要是各个功能的程序流程图 新建 打开NYN Y YN保存 另存N Y开始 isModifiedissave 调用保存函数初始化记事本 结束 开始是否打开文件 选择文件 将文件内容写入记事本 结束开始 开始 第一次保存 调用另存函数将记事本内容写入原文结束 弹出另存对话框 选择路径文件读入记事本内容设置记事本标题为文件名结束退出开始isModifiedY N调用保存函数结束2、根据程序流程图写出各个方法,新建,打开,保存,另存,退出。
三、实验结果(应先列出测试数据,要写明实验的现象,实验数据的处理等。
对于实验结果的表述,一般有三种方法:文字叙述(根据实验目的将实验结果系统化、条理化,用准确的专业术语客观地描述实验现象和结果,要有时间顺序以及各项指标在时间上的关系),图表(用表格或坐标图的方式使实验结果突出、清晰,便于相互比较,尤其适合于分组较多,且各组观察指标一致的实验,使组间异同一目了然;每一图表应有表目和计量单位,应说明一定的中心问题),屏幕截图(实验结果也可以是屏幕截图,充分表明实验的实际情况)。
在实验报告中,可任选其中一种或几种方法并用,以获得最佳效果。
)1、记事本界面布局2、功能描述a、新建:若记事本内容经过修改则提示保存;否则直接初始化记事本b、打开:选择打开的文件,将文件内容读出,写入记事本c、保存:若为第一次保存,调用另存函数;否则将文件内容存为新的记事本内容d、另存:选择另存路径,将记事本内容写入文件e、退出:若未保存或经过修改,则提示保存,调用保存函数,再退出;否则直接退出四、讨论与分析1、实验纠错:a、实验中,出现打开对话框出现两次的情况,即文件选择之后又弹出对话框,需要再选择一次,但是程序中并未出现两次调用。
java记事本实验报告篇一:JAVA记事本实验报告(含源代码运行结果)嘉应学院计算机学院系/班别:指导老师:课程名称:实验内容:学生学号:学生姓名:实验地点:实验类型:实验时间:实验报告计算机学院1203班 Java语言程序设计用Java编写记事本第十四周至第十七周实验要求:能够通过使用JDK1.6安装开发windows 桌面应用程序。
实验目的:熟悉事件触发和事件监听以及组件和容器的界面安排,能够用java设计一个仿windows的标准型记事本。
实验过程描述:一、实验环境:网络实验室二、实验设备:PC机, 网络三、实验平台:winxp. JDK1.6过程描述:1.首先,安装JDK1.62.打开开始-》运行->输入cmd进入dos->cd 路径(原程序的路径)->javac NotepadTest.java(编绎)->java NotepadTest运行四、编写程序:import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ;import ;import ;import ;import ;import ;import ;import ;import ;import ; import ; import ; import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ; import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;import ;class MyTransferHandler extends TransferHandler { JTextArea text=null;public MyTransferHandler(JTextArea text){this.text=text;}public boolean canImport(JComponent c, DataFlavor[] flavors)//在拖放操作期间重复调用此方法,判断是否可以输入{for (int i = 0; i if (return true;}}return false;}public boolean importData(JComponent com,Transferable t){try{篇二:记事本的设计与实现Java版实验报告报告编号:第九组JAVA课程设计报告记事本的设计与实现学生姓名:指导教师:所在系:电子信息系所学专业:计算机科学与技术年级:XX年12月目录摘要 ................................................ ................................................... .. (1)第1章前言 ................................................ ................................................... . (2)1.1研究背景................................................. ................................................... . (2)1.2 开发意义................................................. ................................................... (2)1.3 本文的组织结构 ................................................ ................................................... . (2)第2章需求分析 ................................................ ................................................... . (3)2.1系统功能分析 ................................................ ................................................... (3)2.2 设计目标................................................. ................................................... (4)第3章概要设计 ................................................ ................................................... . (5)第4章详细设................................................... ..................... (7)4.1文件模块的详细设计 ................................................ ................................................... (7).............................................. (7).............................................. (8).............................................. (8).............................................. (9)4.2编辑模块的详细设计 ................................................ ................................................... (9).............................................. (9) (10).............................................. . (11).............................................. . (11).............................................. . (12).............................................. . (12).............................................. . (13)4.3格式模块的详细设计 ................................................ ................................................... . (14)第5章系统测试 ................................................ ................................................... (15)5.1 程序主界面.................................................................................................... (15)5.2文件界面................................................. ................................................... .. (15)5.3编辑菜单................................................. ................................................... .. (17)第6章小结 ................................................ ................................................... .. (27)参考文献 ................................................ ................................................... . (27)摘要本组课程设计的课题是“记事本的设计与实现”,设计的记事本系统应具有新建、打开、保存、剪切、复制、粘贴、查找、字体设置等基本功能,满足用户对文件的处理,文本文档的编辑和字体的设置等要求。
用记事本编写一个java应用程序实习报告[Paragraph 1]IntroductionAs part of my java programming internship, I was tasked with creating a report on my experience using the Notepad application. In this report, I will discuss the process of writing a Java application using Notepad and share my thoughts on the overall effectiveness of this text editor in facilitating software development.作为我在java编程实习的一部分,我的任务之一是撰写一份关于使用记事本应用程序的实习报告。
在本报告中,我将讨论使用记事本编写Java应用程序的过程,并分享对这个文本编辑器在促进软件开发方面整体有效性的看法。
[Paragraph 2]Setting up the environmentThe first step in writing a Java program using Notepad is to ensure that your computer has the necessary software installed. This includes having the latest version of Java Development Kit (JDK) downloaded and installed on yourmachine. Once that is done, you can proceed to open Notepad and begin coding.在使用记事本编写Java程序之前,第一步是确保你的计算机上安装了必要的软件。
Java程序课程设计任务书一、主要任务与目标1.掌握java语言,能够学会使用JCreator开发具体的软件。
2.使用所学知识开发一个基于Java的记事本。
二、主要内容与基本要求本程序在执行后应能处理文本编辑的一些基本功能。
根据记事本的特点,程序主要功能设计有:打开文件,读取文件中的文本信息:对原有文件可实行打开操作,并能读取文件中的内容,以方便对文件的查看,修改等任务。
显示、编辑修改文本信息:记事本对文字信息的主要处理功能。
可对相关信息进行复制,剪切,粘贴等操作。
实现新建、保存文本文件:新建文本可以使用户写入新的信息,文件保存后再次打开仍可获得原有信息。
三、计划进度1.12月28日-- 12月28日:搜集资料、查阅文献,确定选题2.12月29日-- 12月30日:需求分析,系统设计,系统功能模块完善3.1月1日-- 1月3日:编程实现系统、系统测试与修改4.1月4日-- 1月5日:课程设计报告撰写5.1月6日-- 1月7日:课程设计报告答辩四、主要参考文献(1)洪维恩何嘉 java 2面向对象程序设计. 中国铁道出版社,2004.2(2)耿祥义张跃平 Java大学实用教程(第2版).电子工业出版社,2008.5(3)孙全党王吴迪赵枫朝 Java程序设计应用教程,电子工业出版社,2006.2摘要随时着科学技术的快速发展,计算机程序设计早已成为了趋势,JAV A是计算机专业的核心课程,是计算机科学的算法理论基础和软件设计的技术基础。
JA VA是实践性很强的课程。
课程设计是加强实践能力的一个强有力手段。
要求掌握JA V A的应用、编写、上机调试的基本方法。
本课程设计就是主要利用java 语言编写的一个模仿windows 记事本的较简单的程序,它能实现打开文件,读取文件中的文本信息;显示、编辑修改文本信息;实现新建、打开、保存文本文件以及控制保存文本信息到指定的文件的一些基本功能。
该记事本是一个基于JCreator的应用程序。
java课程设计记事本设计报告一、教学目标本课程旨在通过Java编程语言实现一个记事本应用程序,让学生掌握Java编程的基本概念和方法,培养学生的编程能力和解决问题的能力。
1.理解Java编程语言的基本语法和结构。
2.掌握Java编程中的数据类型、变量、运算符、控制语句等基本概念。
3.学习Java中的类和对象的概念,理解封装、继承和多态的原理。
4.熟悉Java中的常用类库和方法。
5.能够运用Java编程语言编写简单的程序。
6.能够使用Java编程语言实现一个记事本应用程序,包括文本的增删改查等功能。
7.能够分析并解决编程过程中遇到的问题。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成项目。
2.培养学生的创新思维和解决问题的能力,鼓励学生进行自主学习和探索。
3.培养学生的学习兴趣和自信心,让学生感受到编程的乐趣和成就感。
二、教学内容本课程的教学内容主要包括Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现。
1.Java编程语言的基本概念和方法:–数据类型、变量、运算符、控制语句等基本概念。
–类和对象的概念,封装、继承和多态的原理。
–常用类库和方法的使用。
2.记事本应用程序的设计和实现:–用户界面设计:创建文本框、按钮等控件,实现用户输入和显示功能。
–文件操作:实现文件的打开、保存、关闭等功能,使用文件读写技术。
–文本处理:实现文本的增删改查等功能,使用数据结构和算法进行文本管理。
三、教学方法本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等,以激发学生的学习兴趣和主动性。
1.讲授法:教师通过讲解Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现,引导学生掌握相关知识。
2.讨论法:学生分组进行讨论,分享自己的理解和思路,互相学习和交流。
3.案例分析法:分析实际案例,让学生了解记事本应用程序的实际应用场景和设计思路。
4.实验法:学生通过编写代码和进行实验,实现记事本应用程序的功能,培养学生的实际编程能力和解决问题的能力。
用Java程序编写一个记事本程序的设计报告学习中心(点):榆林子洲专业:计算机科学与技术层次:专升本姓名:张航批次: 112目录一、设计分析 (1)二、程序结构 (1)三、各模块的功能及程序说明 (2)1、类设计 (2)2、主要功能代码实现 (4)四、源程序 (9)五、操作方法 (20)六、试验结果 (20)七、设计体会 (22)编写一个记事本程序的设计报告一、设计要求1.用图形用户界面实现。
2.能实现编辑、保存、另存为、查找替换等功能。
二、程序结构流程图:图1基本流程图本Java文本编辑器功能设计如下:图2基本功能图三、各模块的功能及程序说明1、类设计(1)类MiniText ,包括initTextPane方法初始化面板,initMenu()方法初始化菜单,initAboutDialog()方法初始化关于对话框,initToolBar()方法初始化工具栏,initRightKey()方法初始化右键设置,等方法。
类成员如下:(2)类Loading (实现登陆)类成员如下:(3)类runtime (实现时间同步)类成员如下:(4)类MainFunction (包含主函数)类成员如下:2、主要功能代码实现(1)登陆界面:class Loading extends JWindow implements Runnable {Thread dluThread=null;private JProgressBar progress;public Loading() {setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));//设置光标为等待状态JPanel dlu = new JPanel(new BorderLayout());URL url = getClass().getResource("/images/loading.jpg");if(url != null){dlu.add(new JButton(new ImageIcon(url)), BorderLayout.CENTER);}progress = new JProgressBar(1,100);progress.setStringPainted(true);progress.setBorderPainted(true);progress.setBackground(Color.white);progress.setForeground(Color.green);dlu.add(progress,BorderLayout.SOUTH);setContentPane(dlu); //设置窗口属性为登陆面板属性Dimension screen = getToolkit().getScreenSize();pack(); //显示登陆界面setLocation(screen.width/4,screen.height/4); //设置登陆界面始终在屏幕中间显示}public void start(){// this.toFront();dluThread=new Thread(this);dluThread.start(); }public void run(){show();try {for (int i=0;i<100;i++){Thread.sleep(100);progress.setValue(progress.getValue() + 1);progress.setString("欢迎进入迷你编辑,请稍后... ... "+i+"%"); } }catch (Exception ex) {ex.printStackTrace(); }dispose();//关闭登陆界面} }(2).时间标签:class runtime extends JButton implements Runnable{Thread datetime=null;public runtime(){}public void run(){for(;;){//java.util.Date timeer=new java.util.Date();Calendar now=Calendar.getInstance();int year1=now.get(Calendar.YEAR);int month1=now.get(Calendar.MONTH);int day1=now.get(Calendar.DAY_OF_MONTH);int hour1=now.get(Calendar.HOUR);int minute1=now.get(Calendar.MINUTE);int sec=now.get(Calendar.SECOND);setText(year1+"年"+month1+"月"+day1+"日"+hour1+":"+minute1+":"+sec);//System.out.println(now.get(Calendar.DAY_OF_MONTH)-60);try{Thread.currentThread().sleep(1000);}catch(InterruptedException e){} } }}(3)右键的实现:void initRightKey (){filepopup=new JPopupMenu();uundo=new JMenuItem("撤消(U)");uundo.setMnemonic('U');ccut=new JMenuItem("剪切(T)");ccut.setMnemonic('T');ccopy=new JMenuItem("复制(C)");ccopy.setMnemonic('C');ppaste=new JMenuItem("粘贴(V)");ppaste.setMnemonic('V');ddelete=new JMenuItem("删除(D)");ddelete.setMnemonic('D');sselectall=new JMenuItem("全选(A)");sselectall.setMnemonic('A');filepopup.add(uundo);filepopup.addSeparator();filepopup.add(ccut);filepopup.add(ccopy);filepopup.add(ppaste);filepopup.add(ddelete);filepopup.addSeparator();filepopup.add(sselectall);uundo.addActionListener(action);ccut.addActionListener(action);ccopy.addActionListener(action);ppaste.addActionListener(action);ddelete.addActionListener(action);sselectall.addActionListener(action);text.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent event){checkForTriggerEvent(event);}public void mouseReleased(MouseEvent event){checkForTriggerEvent(event);}public void checkForTriggerEvent(MouseEvent event){if(event.isPopupTrigger()){filepopup.show(event.getComponent(),event.getX(),event.getY());} }}); }(4)打开、保存、复制、粘贴、撤销等功能事件响应实现://事件处理ActionListener action = new ActionListener(){public void actionPerformed(ActionEvent e){ JMenuItem mi = (JMenuItem)e.getSource();String id = mi.getText();if(id.equals("新建")){Date date=new Date();text.setText(date.toString());file = null;}else if(id.equals("打开...")){if(file != null)filechooser.setSelectedFile(file);//为用户选择文件提供了一种简单的机制int returnVal = filechooser.showOpenDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();openFile(); } }else if(id.equals("保存...")){if(file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showSaveDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();saveFile();JOptionPane.showMessageDialog(null,"已保存");}}else if(id.equals("另存为")){if(file != null)filechooser.setSelectedFile(file);int returnVal = filechooser.showSaveDialog(MiniText.this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();saveFile();JOptionPane.showMessageDialog(null,"已保存"); } } else if(id.equals("打印")){prt.printDialog();}else if(id.equals("打印页面设置")){try {prt.print();} catch(Exception ew){JOptionPane.showMessageDialog(null,"打印出错!","错误",JOptionPane.ERROR_MESSAGE); } }else if(id.equals("退出")){ System.exit(0); }else if(id.equals("剪切")||id.equals("剪切(T)")){ text.cut();}else if(id.equals("复制")||id.equals("复制(C)")){text.copy();}else if(id.equals("粘贴")||id.equals("粘贴(V)")){text.paste(); }else if(id.equals("删除")||id.equals("删除(D)")){text.replaceSelection(""); }else if(id.equals("选择全部")||id.equals("全选(A)")){text.selectAll();}else if(id.equals("字体颜色...")){color = JColorChooser.showDialog(MiniText.this,"字体颜色设置",color);text.setForeground(color);} else if(id.equals("自动换行")){ }else if(id.equals("撤销")||id.equals("撤消(U)")){text.setText("");text.selectAll();}else if(id.equals("查找")){String find="查找";find=JOptionPane.showInputDialog("查找:"); }else if(id.equals("时间")){time.setFont(new Font("Times New Roman",Font.PLAIN,12));text.insertComponent(time); }else if(id.equals("系统记事本")){try{String command = "notepad.exe";Process child = Runtime.getRuntime().exec(command);//从系统进程中调用记事本}catch (IOException ex) { }}else if(id.equals("系统计算器")){try{String command = "calc.exe";Process child = Runtime.getRuntime().exec(command);//调用系统计算器}catch (IOException ex) { }}else if(id.equals("关于")){about.setSize(250,150);about.show();} } };四、源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;public class Notepad extends JFrame {// 系统组件声明private JMenuBar menuBar = new JMenuBar();private JEditorPane content = new JEditorPane();private JScrollPane scroll = new JScrollPane(content);private JFileChooser filechooser = new JFileChooser() ;private BorderLayout bord = new BorderLayout();private JLabel statusBar = new JLabel();private JPanel pane = new JPanel();private File file = null;// 定义文件菜单private JMenu fileMenu = new JMenu();private JMenuItem newMenuItem = new JMenuItem();private JMenuItem openMenuItem = new JMenuItem();private JMenuItem saveMenuItem = new JMenuItem();private JMenuItem saveAsMenuItem = new JMenuItem();private JMenuItem pageSetupMenuItem = new JMenuItem();private JMenuItem printMenuItem = new JMenuItem();private JMenuItem exitMenuItem = new JMenuItem();// 定义风格菜单private JMenu styleMenu = new JMenu();private ButtonGroup styleMenuGroup = new ButtonGroup();private JRadioButtonMenuItem javaStyleMenuItem = new JRadioButtonMenuItem(); private JRadioButtonMenuItem metalStyleMenuItem = new JRadioButtonMenuItem(); private JRadioButtonMenuItem windowsStyleMenuItem = new JRadioButtonMenuItem();// 定义帮助菜单private JMenuItem aboutMenuItem = new JMenuItem();private JMenuItem helpTopicMenuItem = new JMenuItem();private JMenu helpMenu = new JMenu();// 构造函数public Notepad(){initComponents();}private void initComponents(){// 添加子菜单项到文件菜单fileMenu.setText("\u6587\u4ef6 (F)");newMenuItem.setText("新建(N)Ctrl+N");openMenuItem.setText("打开(O)...Ctrl+O");saveMenuItem.setText("保存(S)Ctrl+S");saveAsMenuItem.setText("另存为(A)...");pageSetupMenuItem.setText("页面设置(U)...");printMenuItem.setText("打印(P)...Ctrl+P");exitMenuItem.setText("退出");fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.add(saveMenuItem);fileMenu.add(saveAsMenuItem);fileMenu.addSeparator();fileMenu.add(pageSetupMenuItem);fileMenu.add(printMenuItem);fileMenu.addSeparator();fileMenu.add(exitMenuItem);// 添加子菜单项到风格菜单styleMenu.setText("风格(S)");javaStyleMenuItem.setText("Java默认");metalStyleMenuItem.setText("Metal风格");windowsStyleMenuItem.setText("Windows风格");styleMenuGroup.add(javaStyleMenuItem);styleMenuGroup.add(metalStyleMenuItem);styleMenuGroup.add(windowsStyleMenuItem);styleMenu.add(javaStyleMenuItem);styleMenu.add(metalStyleMenuItem);styleMenu.add(windowsStyleMenuItem);// 添加子菜单项到帮助菜单helpMenu.setText("帮助(H)");helpTopicMenuItem.setText("帮助主题(H)");aboutMenuItem.setText("关于记事本(A)");helpMenu.add(helpTopicMenuItem);helpMenu.addSeparator();helpMenu.add(aboutMenuItem);// 定义文件菜单下的事件监听newMenuItem.addActionListener(new newMenuItem_actionAdapter(this)); openMenuItem.addActionListener(new openMenuItem_actionAdapter(this)); saveMenuItem.addActionListener(new saveMenuItem_actionAdapter(this)); saveAsMenuItem.addActionListener(new saveAsMenuItem_actionAdapter(this)); pageSetupMenuItem.addActionListener(new pageSetupMenuItem_actionAdapter(this)); printMenuItem.addActionListener(new printMenuItem_actionAdapter(this)); exitMenuItem.addActionListener(new exitMenuItem_actionAdapter(this));// 定义风格菜单下的事件监听javaStyleMenuItem.addActionListener(new javaStyleMenuItem_actionAdapter(this)); metalStyleMenuItem.addActionListener(new metalStyleMenuItem_actionAdapter(this)); windowsStyleMenuItem.addActionListener(new windowsStyleMenuItem_actionAdapter(this));// 定义帮助菜单下的事件监听helpTopicMenuItem.addActionListener(new helpTopicMenuItem_actionAdapter(this));aboutMenuItem.addActionListener(new aboutMenuItem_actionAdapter(this));// 填加菜单到菜单栏menuBar.add(fileMenu);menuBar.add(styleMenu);menuBar.add(helpMenu);// 对主窗口的一些设置this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setTitle("无标题- \u8bb0\u4e8b\u672c");this.setSize(640,480);setJMenuBar(menuBar);pane.setLayout(bord);pane.add("Center",scroll);setContentPane(pane);}// 定义新建菜单项方法public void newMenuItemActionPerformed(ActionEvent evt){file = null;if(!("".equals(content.getText()))){Object[] options = { "是(Y)", "否(N)","取消" };int s = JOptionPane.showOptionDialog(null, "\u6587\u4ef6 "+getTitle()+" \u7684\u6587\u5b57\u5df2\u7ecf\u6539\u53d8\u3002\n\u60f3\u4fdd\u5b58\u6587\u4ef6\u5417\uff 1f", "\u8bb0\u4e8b\u672c",JOptionPane.DEFAULT_OPTION, JOptionPane.W ARNING_MESSAGE,null, options, options[0]);switch(s){case 0:int returnVal=filechooser.showSaveDialog(this);if(returnVal == JFileChooser.APPROVE_OPTION) {file=filechooser.getSelectedFile();try{FileWriter fw=new FileWriter(file);fw.write(content.getText());setTitle(filechooser.getSelectedFile().getName()+" - \u8bb0\u4e8b\u672c");fw.close();}catch(Exception e){e.printStackTrace();}break;}case 1:content.setText("");setTitle("无标题- \u8bb0\u4e8b\u672c");}}}// 定义打开菜单项方法public void openMenuItemActionPerformed(ActionEvent evt){try {file = null;int returnVal = filechooser.showOpenDialog(this);if(returnVal == JFileChooser.APPROVE_OPTION){file = filechooser.getSelectedFile();FileReader fr = new FileReader(file);int len = (int)file.length();char[] buffer = new char[len];fr.read(buffer,0,len);fr.close();content.setText(new String(buffer));}}catch(Exception e){e.printStackTrace();}}// 定义退出菜单项方法public void exitMenuItem_actionPerformed(ActionEvent e){if(!("".equals(content.getText()))){Object[] options = { "是(Y)", "否(N)","取消" };int s = JOptionPane.showOptionDialog(null, "文件的文字已经改变。
java简易记事本实验报告Java简易记事本实验报告一、实验目的•学习使用Java编程语言•熟悉图形用户界面(GUI)的设计与实现•掌握文件读写操作二、实验背景近年来,随着信息技术的快速发展,电子设备普及程度日益增加。
人们习惯使用记事本软件记录临时笔记、备忘、任务清单等信息。
因此,本次实验旨在通过Java编写一个简易的记事本应用程序,以满足人们的基本需求。
三、实验过程1.学习Java编程语言基础知识,包括变量、数据类型、循环、条件语句等。
2.了解图形用户界面(GUI)设计原理和相关组件。
3.使用Java Swing库设计记事本的用户界面,包括菜单栏、工具栏、文本框等。
4.实现文件读写功能,使得用户可以保存和打开文本文件。
5.添加其他功能,如剪切、复制、粘贴、查找、替换等。
四、实验结果通过以上实验过程,我们成功设计并实现了一个简易的记事本应用程序。
这个程序具备了基本的文本编辑功能,并支持文件的保存和打开。
五、实验总结本次实验是一个较为基础的Java编程实践,通过设计和开发一个简易的记事本应用程序,我们熟悉了Java编程语言的使用,掌握了图形用户界面的设计与实现,加深了对文件读写操作的理解。
在实验过程中,我们遵循了一定的规则和步骤,通过列点方式对实验目的、过程和结果进行了总结。
这样的总结方式清晰明了,便于读者理解和回顾。
通过本次实验,我们不仅提升了Java编程能力,还培养了问题解决和团队合作的能力。
我们相信,通过不断实践和学习,我们的能力会不断提高,创造出更加优秀的应用程序。
六、改进方向虽然我们已经成功实现了一个简易的记事本应用程序,但仍有一些改进的方向可以考虑:1.添加更多的编辑功能:除了基本的剪切、复制、粘贴功能,可以考虑添加撤销、重做、全选、自动保存等功能,以提升用户的编辑体验。
2.改善用户界面设计:可以进一步优化用户界面的布局和样式,提升用户的使用感受。
可以考虑添加主题切换功能,让用户可以根据自己的喜好选择不同的界面风格。
java简单记事本源代码Java简单记事本源代码一、引言记事本是我们日常生活中常用的工具之一,它可以帮助我们记录重要的事项和备忘录。
在本文中,我们将介绍一个简单的记事本的Java源代码,它具有基本的记事功能,包括新建、打开、保存和关闭等操作。
二、界面设计记事本的界面应该简洁明了,用户可以通过菜单栏或快捷键来完成各个功能。
我们可以使用Swing库来实现记事本的图形界面。
在界面上,我们可以添加一个菜单栏,包括文件、编辑、格式和帮助等几个选项。
其中,文件菜单下应该包括新建、打开、保存和关闭选项。
三、实现新建功能新建功能是记事本的基本功能之一,它可以创建一个新的文档供用户编辑。
在Java中,我们可以使用JTextArea组件来实现文本编辑区域。
当用户选择新建功能时,我们可以清空文本编辑区域,让用户可以开始编辑新的内容。
四、实现打开功能打开功能允许用户从计算机中选择一个已有的文档进行编辑。
在Java中,我们可以使用JFileChooser组件来实现文件选择对话框。
当用户选择打开功能时,我们可以弹出一个文件选择对话框,让用户选择一个文档进行打开。
然后,我们可以读取文档内容,并显示在文本编辑区域中供用户编辑。
五、实现保存功能保存功能可以将用户编辑完成的文档保存到计算机中。
在Java中,我们可以使用JFileChooser组件来实现文件保存对话框。
当用户选择保存功能时,我们可以弹出一个文件保存对话框,让用户选择保存的路径和文件名。
然后,我们可以将文本编辑区域中的内容保存到指定的文件中。
六、实现关闭功能关闭功能是记事本的重要功能之一,它可以关闭当前打开的文档并退出记事本程序。
在Java中,我们可以使用System.exit(0)语句来实现程序的退出。
当用户选择关闭功能时,我们可以先判断当前文档是否已保存,如果未保存,则弹出提示框询问用户是否保存。
如果用户选择保存,则执行保存功能;如果用户选择不保存,则直接退出程序。
// 程序主类public class Diary{public static void main(String args[]) throws Exception{new LoginWindow();Remember win=new Remember();win、pack();}}import javax、swing、*;import javax、swing、tree、*;import java、awt、*;import java、awt、event、*;import javax、swing、event、*;import java、io、*;import java、util、*;// 日记本类class Remember extends JFrame implements TreeSelectionListener,ActionListener{private static final String DiaryRoot = null;JTree tree=null;int i=0,r=255,g=255,b=255;JTextArea text=new JTextArea(" ",20,50);DefaultMutableTreeNode root;DefaultMutableTreeNode month[]=new DefaultMutableTreeNode[13];JButton b_save=new JButton("保存"),b_fontCommen=new JButton("还原"),b_fontBig=new JButton("大字"),b_fontRed=new JButton("红色"),b_fontBlue=new JButton("蓝色"),b_bg=new JButton("背景");Remember(){Container con=getContentPane();DefaultMutableTreeNode root=new DefaultMutableTreeNode("日记本");//设置以月份为节点的树for(i=1;i<=12;i++){month[i]=new DefaultMutableTreeNode(""+i+"月");root、add(month[i]);}//设置不同月份的节点for(i=1;i<=12;i++){//处理有31天的月份if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){for(int j=1;j<=31;j++){String s1=month[i]、toString();String s2=j+"日、txt";new );//如果这一天写了日记则相应节点后面添加一个“*”来标志if(()==true) month[i]、add(new DefaultMutableTreeNode(j+"日*"));else month[i]、add(new DefaultMutableTreeNode(j+"日"));}}//处理有30天的月份else if(i==4||i==6||i==9||i==11){for(int j=1;j<=30;j++){String s1=month[i]、toString();String s2=j+"日、txt";new );//如果这一天写了日记则相应节点后面添加一个“*”来标志if(()==true) month[i]、add(new DefaultMutableTreeNode(j+"日*"));else month[i]、add(new DefaultMutableTreeNode(j+"日"));}}//处理有28天的月份else{for(int j=1;j<=28;j++) {String s1=month[i]、toString();String s2=j+"日、txt";new );//如果这一天写了日记则相应节点后面添加一个“*”来标志if(()==true) month[i]、add(new DefaultMutableTreeNode(j+"日*"));else month[i]、add(new DefaultMutableTreeNode(j+"日"));}}}//设置监听b_save、addActionListener(this);b_fontRed、addActionListener(this);b_fontCommen、addActionListener(this);b_fontBig、addActionListener(this);b_fontBlue、addActionListener(this);b_bg、addActionListener(this);//创建树及其面板tree =new JTree(root);JPanel p=new JPanel();//设置边界布局p、setLayout(new BorderLayout());JScrollPane scrollpane_1=new JScrollPane(text);//带滚动条的面板放置到中间,可以占据最大空间位置p、add(scrollpane_1,BorderLayout、CENTER);//设置面板,放置"保存"与"删除"按钮等按钮,面板放在上部JPanel p_1=new JPanel();p_1、add(b_save);p_1、add(b_fontCommen);p_1、add(b_fontBig);p_1、add(b_fontRed);p_1、add(b_fontBlue);p_1、add(b_bg);//设置布局p、add(p_1,BorderLayout、NORTH);JScrollPane scrollpane_2=new JScrollPane(tree);JSplitPane splitpane=new JSplitPane(JSplitPane、HORIZONTAL_SPLIT,true,scrollpane_2,p);tree、addTreeSelectionListener(this);con、add(splitpane);//设置窗体适配器,关闭功能addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System、exit(0);} });setVisible(true);setBounds(200,150,500,600);}//处理树节点事件public void valueChanged(TreeSelectionEvent e){//清空文本区中的内容text、setText(" ");if(e、getSource()==tree){//定义被选中的节点DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree、getLastSelectedPathComponent();//如果就是叶节点,则可以对文件进行操作if(node、isLeaf()){//日记以“-月-日、txt”的形式存储,所以要消除“*”号的影响String str=node、toString();str=str、substring(0,str、length()-1);for(int i=0;i<=12;i++){if(node、getParent()==month[i]){try {String temp=null;//打开以节点(“*”号影响已经消除)所定义的文本为文件名的文件new ()、toString()+str+"、txt");//建立文本文件输入流,读取文件(f);BufferedReader in=new BufferedReader(file);//将读到的文件内容添加到文本区中,按行读入while((temp=in、readLine())!=null)text、append(temp+'\n');();in、close();}catch( e1){ }catch(IOException e1){ }}}}}}//处理按钮事件public void actionPerformed(ActionEvent e){//处理"保存"按钮的事件if(e、getSource()==b_save){DefaultMutableTreeNode node=(DefaultMutableTreeNode)tree、getLastSelectedPathComponent();String str=node、toString();//保存文件时去除“*”号的影响str=str、replace("*","");//如果就是叶节点,则可以对文件进行操作if(node、isLeaf()){//保存文件try{//建立以节点所定义的文本为文件名的文件new ()、toString()+str+"、txt");//建立文本文件输出流to (f);BufferedWriter out=new BufferedWriter(tofile);//将文本区中的内容写到文件缓冲区out、write(text、getText(),0,(text、getText())、length());//将缓冲区中的内容写到文件out、flush();to();out、close();}catch( e1){ }catch(IOException e1){ }}}// 处理"大字"按钮事件else if(e、getSource()==b_fontBig){text、setFont(new Font("Serif",1, 18));}// 处理"普通"按钮事件else if(e、getSource()==b_fontCommen){text、setFont(new Font("Serif",0,12));text、setForeground(Color、black);}// 处理"红色"按钮事件else if(e、getSource()==b_fontRed){text、setForeground(Color、red);}// 处理"蓝色"按钮事件else if(e、getSource()==b_fontBlue) {text、setForeground(Color、blue);}// 处理"背景"按钮事件else if(e、getSource()==b_bg){// 随机变化背景颜色// 随机+ - 操作,当op>0、5时做减法负责做加法,double op = Math、random();double c = Math、random()*10;if(op>0、5){// 使r,g,b三个标志RGB的变量减小一个随机的大小小在0-50之间的数if(c<4) r-=Math、random()*50;if(c>4 && c<7) g-=Math、random()*50;if(c>7) b-=Math、random()*50;}if(op<=0、5){// 使r,g,b三个标志RGB的变量增加一个随机的大小小在0-50之间的数if(c<4) r-=Math、random()*50;if(c>4 && c<7) g-=Math、random()*50;if(c>7) b-=Math、random()*50;}text、setBackground(new Color(r,g,b)); }}//删除文件void del(){// 调用外部命令执行批处理程序try{Runtime ce=Runtime、getRuntime();ce、exec("gxy、bat");} catch(IOException e1){ }}}//登陆窗口类class LoginWindow extends JDialog implements ActionListener{JTextField txtUserName=new JTextField(15); //用户名文本框JTextField txtPwd=new JPasswordField(15);//密码框JButton ok=new JButton("确定");JButton cancel=new JButton("取消");public LoginWindow(){JPanel[] p=new JPanel[4];for(int i=0;i<4;i++ )p[i]=new JPanel();JPanel p1=new JPanel(); //定义并建立面板setModal(true); //设置模态setBackground(Color、LIGHT_GRAY);//设置背景色Container contentPane=this、getContentPane();//取出内容面板contentPane、setLayout(new GridLayout(5,1)); //设置布局为5行1列p[1]、add(new JLabel("用户名:"));p[1]、add(txtUserName); //将组件添加到中间容器p[2]、add(new JLabel("密码:"));p[2]、add(txtPwd);p[3]、add(ok);p[3]、add(cancel);ok、addActionListener(this);cancel、addActionListener(this);txtUserName、addActionListener(this);txtPwd、addActionListener(this);contentPane、add(p[0]); //将面板添加到内容面板contentPane、add(p[1]);contentPane、add(p[2]);contentPane、add(p[3]);setDefaultCloseOperation(JFrame、DISPOSE_ON_CLOSE);//设置自动关闭窗口setSize(300,220);// Dimension 类封装单个对象中组件的宽度与高度Dimension screen=Toolkit、getDefaultToolkit()、getScreenSize(); setLocation((screen、width-300)/2,(screen、height-220)/2);setTitle("登录窗口");setResizable(false); //设置窗口大小固定setVisible(true);}//添加事件监听器public void actionPerformed(ActionEvent e){//处理”确定”按钮事件if(e、getSource()==ok||e、getSource()==txtPwd){if(txtUserName、getText()、trim()、equals("c") && txtPwd、getText()、equals("123"))//如果用户名为c密码为123 则正确{dispose(); //关闭登录窗口}else{JOptionPane、showMessageDialog(null,"用户名或密码错误!");txtUserName、requestFocus(); //设置焦点txtUserName、setSelectionStart(0); //设置选中文本开始位置txtUserName、setSelectionEnd(txtUserName、getText()、length()); }}//处理”取消”按钮事件else if(e、getSource()==cancel){dispose();System、exit(0); //退出程序}else if(e、getSource()==txtUserName) //在用户名文本框按回车移动焦点到密码框{txtPwd、requestFocus();}}}运行,出现登陆界面若输入的用户名与密码有误输入正确的用户名:c正确的密码:123登陆成功,进入电子日记版面输入内容,对字体进行加粗,变色与添加背景点击还原java电子日记本代码及运行结果凡就是在当天有过记录的日期都有*的标志。
JAVA程序设计实验报告院系:信息工程系专业:计算机应用技术班级:11计算机01班姓名:Civen任课教师:XXX实验题目:JA V A简单记事本程序设计目录目录 (1)一、引言 (2)1.1 课程设计目的 (2)1.2 题目说明 (2)1.3 开发工具介绍 (2)二、总体设计 ..............................................错误!未定义书签。
2.1系统开发平台...................................错误!未定义书签。
2.2 系统流程图 (4)2.3功能结构图.......................................错误!未定义书签。
2.4数据库设计.......................................错误!未定义书签。
三、详细说明 (4)3.1 系统实施..........................................错误!未定义书签。
四、系统的调试和运行 (9)五、课程设计总结 (9)六、参考文献 (9)附录(源程序代码) (10)一、引言1.1 课程设计目的1) 复习,巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;2) 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力,提高学生适应实际,实践编程的能力;3) 培养学生在项目开发中团队合作精神,创新意识及能力。
1.掌握窗口、菜单等高级组件的应用。
2.掌握Java Swing的使用方法。
3.了解GUI应用程序的创建过程与方法。
1.2 题目说明课题:学生成绩管理4.功能要求: 编写一个简单记事本程序,要求包含以下菜单项文件新建、打开、保存、退出编辑剪切、拷贝、粘贴、查找帮助关于5.实现文件和编辑菜单里的功能1.3 开发工具介绍Eclipse是一种可扩展的开放源代码IDE。
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; public class Notepad extends JFrame {係统组件声明private JMenuBar menuBar = new JMe nuBar(; private JEditorPa ne content = new JEditorPa ne(; private JScrollPa ne scroll = new JScrollPa ne(c ontent; private JFileChooser filechooser = new JFileChooser(; private BorderLayout bord = new BorderLayout(; private JLabel statusBar = new JLabel(; private JPanel pane = new JPanel(; private File file = null; /定义文件菜单private JMenu fileMenu = new JMenu(; private JMenultem newMenultem = new JMenultem(; private JMe nultem ope nMen ultem = new JMe nultem(; private JMe nultem saveMe nultem = new JMe nultem(; private JMe nultem saveAsMe nultem = new JMe nultem(; private JMe nultem pageSetupMe nultem = new JMe nultem(; private JMe nultem prin tMe nultem = new JMe nultem(; private JMe nultem exitMe nultem = new JMenultem(; // 定义风格菜单private JMenu styleMenu = new JMenu(; private Butt on Group styleMe nu Group = new Butt on Group(; private JRadioButt onMen ultem javaStyleMe nultem = new JRadioButt onMen ultem(; private JRadioButt onMen ultem metalStyleMe nultem = new JRadioButt onMen ultem(; private JRadioButt onMen ultem windowsStyleMenultem = new JRadioButtonMenultem(; // 定义帮助菜单private JMe nultem aboutMe nultem = new JMe nultem(; private JMe nultem helpTopicMe nultem =new JMenultem(; private JMenu helpMenu = new JMenu(; 〃构造函数public Notepad({ initComponents(; } private void initComponents({ // 添加子菜单项到文件菜单fileMe nu.setText("\u6587\u4ef6 (F"; n ewMe nultem.setText(” 新建(NCtrl+N"; ope nMen ultem.setText(” 打开(O…Ctrl+O"; saveMe nultem.setText(”保存(S Ctrl+S"; saveAsMenultem.setText(” 另存为(A..."; pageSetupMenultem.setText(” 页面设置(U..."; printMenultem.setText(” 打印(P... Ctrl+P"; exitMe nultem.setText(” 退出";fileMe nu.add( newMe nultem;fileMe nu .add(ope nMen ultem; fileMe nu .add(saveMe nultem; fileMe nu .add(saveAsMe nultem; fileMe nu.addSeparator(; fileMenu.add(pageSetupMenultem;fileMenu.add(printMenultem; fileMe nu.addSeparator(; fileMe nu.add(exitMe nultem; // 添加子菜单项到风格菜单styleMe nu.setText(‘ 风格(S"; javaStyleMe nultem.setText("Java 默认";metalStyleMe nultem.setText("Metal 风格";wi ndowsStyleMe nultem.setText("Wi ndows 风格";styleMe nuGroup.add(javaStyleMe nultem;styleMe nuGroup.add(metalStyleMe nuItem;styleMe nu Group.add(wi ndowsStyleMe nultem; styleMe nu .add(javaStyleMe nultem; styleMe nu.add(metalStyleMe nultem; styleMe nu.add(wi ndowsStyleMe nultem; // 添加子菜单项到帮助菜单helpMenu.setText(‘帮助(H"; helpTopicMenultem.setText(” 帮助主题(H"; aboutMenultem.setText(” 关于记事本(A";helpMe nu .add(helpTopicMe nultem; helpMe nu .addSeparator(;helpMe nu .add(aboutMe nultem; //定义文件菜单下的事件监听n ewMe nultem.addActio nListe ner(new n ewMe nultem_actio nAdapter(this; ope nMen ultem.addActio nListe ner(new ope nMen ultem_actio nAdapter(this; saveMenultem.addActio nListe ner(new saveMe nultem_actio nAdapter(this; saveAsMe nultem.addActio nListe ner(new saveAsMe nultem_actio nAdapter(this; pageSetupMe nultem.addActio nListe ner(new pageSetupMe nultem_actio nAdapter(this; prin tMe nultem.addActi on Liste ner(n ew prin tMe nultem_actio nAdapter(this;exitMenultem.addActionListener(new exitMenultem_actionAdapter(this; // 定义风格菜单下的事件监听javaStyleMenultem.addActionListener(newjavaStyleMenultem_actionAdapter(this; metalStyleMenultem.addActionListener(new metalStyleMe nultem_actio nAdapter(this;wi ndowsStyleMe nultem.addActio nListe ner(newwi ndowsStyleMe nultem_actio nAdapter(this; // 定义帮助菜单下的事件监听helpTopicMe nultem.addActio nListe ner(new helpTopicMe nultem_actio nAdapter(this; aboutMe nultem.addActio nListe ner(new aboutMe nultem_actio nAdapter(this; 〃填加菜单至U菜单栏menuBar.add(fileMenu; menuBar.add(styleMenu; menuBar.add(helpMenu; // 对主窗口的一些设置this.setDefaultCloseOperation(EXIT_ON_CLOSE; this.setTitle(" 纪生的记事本";this.setSize(640,480; setJMenuBar(menuBar; pane.setLayout(bord;pane.add("Center",scroll; setContentPane(pane; } /定义新建菜单项方法public void newMe nultemActio nPeformed(Actio nEve nt evt{ file = nu II;if(!("".equals(co nten t.getText({ Object]] optio ns = {" 是(Y "," 否(N "," 取消"}; int s = JOptio nPan e.showOptio nDialog( null, "\u6587\u4ef6 "+getTitIe(+"\u7684\u6587\u5b57\u5df2\u7ecf\u6539\u53d8\u3002\n\u60f3\u4fdd\u5b58\u6587\u4ef6 \u5417\uff1f", "\u8bb0\u4e8b\u672c", JOptio nPan e.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]; switch(s{ case 0: int returnVal=filechooser.showSaveDialog(this; if(returnVal ==JFileChooser.APPROVE_OPTION { file=filechooser.getSelectedFile(; try{ FileWriterfw=new FileWriter(file; fw.write(co nten t.getText(;setTitle(filechooser.getSelectedFile(.getName(+" - \u8bb0\u4e8b\u672c"; fw.close(; } catch(Excepti on e{ e.pri ntStackTrace(; } break; } case 1: conten t.setText(""; setTitle("无标题-\u8bb0\u4e8b\u672c"; } } } // 定义打开菜单项方法public voidope nMen ultemActio nPeformed(Actio nEve nt evt{ try { file = n ull; int returnVal = filechooser.showOpenDialog(this; if(returnVal ==JFileChooser.APPROVE_OPTION{ file = filechooser.getSelectedFile(; FileReader fr = new FileReader(file; int len = (in tfile .len gth(; char[] buffer = new char[le n]; fr.read(buffer,0,le n; fr.close(; conten t.setText (newString(buffer; } } catch(Exception e{ e.printStackTrace(; } } // 定义退出菜单项方法public void exitMe nultem_actio nPeformed(Actio nEve nte{ if(!("".equals(co nte nt.getText({ Object]] optio ns = {" 是(Y "," 否(N "," 取消"}; int s = JOptionPane.showOptionDialog(null,"文件的文字已经改变。
山东工商学院《JAVA程序设计》课程设计报告报告题目: JAVA写字留痕所在院系:计算机科学与技术学院所在班级:网络工程姓名: ***一.设计思路1.作为日记本,为了保密性,设计了登陆界面,只有知道密码才能登陆到主界面,在主界面文本区,右键单击菜单可以进行密码的修改。
如上图。
2. 主界面用了两个Jpanel。
左边的图片,日历等为一个JPanel;右边的文本框,JButton 等为另一个JPanel。
两个JPanel都是用的GridLayout,主界面的JFram用的是FlowLayout。
如上图。
3. 当更换日期,关闭窗口,点击保存,都能把当前日期的日记保存到磁盘上。
4. 当更换年月后,要先选择日期才能在文本区进行输入,否则会提示选择日期。
JLable的显示内容会变为“请选择日期”。
如下图。
二.实现代码1. 登陆界面的代码,只有输入正确的密码才能登陆日记程序。
public class PassValidate extends JFrame implements ActionListener {JPasswordField passfield;JLabel label,title1,title2,title3,title4;JButton yes,cancle;PassValidate(){super("登录");setDefaultCloseOperation(3);Toolkit tool=();Image im=("");(im); 文本区JPanel的实现代码。
public class FileEditor extends JPanel implements ActionListener{ JPanel buttonPanel;static JLabel title;JTextAreaWithMenu t;JButton save,delete,inport,outport;boolean dateexistence=true;int year;int mouth;int day;Hashtable<String, String> data= new Hashtable<String, String>();File file=new File("data\\");ObjectOutputStream hashOut;ObjectInputStream hashIn;String journalpass;rim().equals("")){(year)+(mouth)+(day));}if(!().trim().equals("")){try {(year)+(mouth)+(day),());(data);();"indatasave"); 主界面,把两个JPanel组成一个日记程序的主界面。
华北科技学院计算机系综合性实验实验报告课程名称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) {}}。