java 记事本

合集下载

我用java编写的记事本代码,分享给大家

我用java编写的记事本代码,分享给大家
backcolor.add(gray); backcolor.addSeparator();
backcolor.add(white); backcolor.addSeparator();
backcolor.add(pink); backcolor.addSeparator();
backcolor.add(morecolor);
JMenuItem red=new JMenuItem("红色");//","橙","黄","","青","蓝","紫","黑","灰","白","粉红"
JMenuItem green=new JMenuItem("绿色");
JMenuItem yellow=new JMenuItem("黄色");
clear.setFont(a); clear.setForeground(Color.MAGENTA);
paste.setFont(a); paste.setForeground(Color.MAGENTA);
cut.setFont(a); cut.setForeground(Color.MAGENTA);
JMenuItem black=new JMenuItem("黑色");
JMenuItem gray=new JMenuItem("灰色");
JMenuItem white=new JMenuItem("白色");
JMenuItem pink=new JMenuItem("粉红");

java日历记事本小游戏当前时间代码

java日历记事本小游戏当前时间代码

rightPanel=new JPanel();
this.year=year;
this.month=month;
this.day=day;
负责改变年=new Year(this);
private static final long serialVersionUID = -1805873342285018876L;
int a,b,c;
WindowButton Game;
Timer Time;
CalendarPad 开始=null;
fileMenu1.add(item1);
fileMenu1.add(item2);
fileMenu1.add(item3);
bar.add(fileMenu1);
win.setMenuBar(bar);
win.add(la,BorderLayout.CENTER);
item1=new MenuItem("日历记事本");
bar=new MenuBar();
fileMenu1=new Menu("菜单选项");
item2=new MenuItem("小游戏");
item3=new MenuItem("当前时间");
if(e.getSource()==item2)
{Game=new WindowButton("小游戏");
Game.setVisible(true);}
if(e.getSource()==item3)
{ Calendar calendar=Calendar.getInstance();

java记事本实验报告doc

java记事本实验报告doc

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 java.io.File;import .URLClassLoader;import .URL;import ng.InterruptedException;import java.io.FileInputStream;import java.io.FileOutputStream; import java.io.PrintStream;import java.util.Scanner;import java.util.Date;import java.util.Iterator;import java.util.List;import java.text.SimpleDateFormat; import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.ImageIcon;import javax.swing.JScrollPane; import javax.swing.JToolBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; import javax.swing.JPopupMenu; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.JFileChooser; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.BorderFactory; import javax.swing.JList;import javax.swing.JComboBox; import javax.swing.UIManager; import javax.swing.JRadioButton; import javax.swing.JToggleButton;import javax.swing.ButtonGroup;import javax.swing.TransferHandler;import javax.swing.border.Border;import javax.swing.border.TitledBorder;import javax.swing.text.Document;import javax.swing.undo.UndoManager;import javax.swing.undo.UndoableEdit;import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.event.DocumentListener;import javax.swing.event.DocumentEvent;import javax.swing.JComponent;import java.awt.Font;import java.awt.Window;import java.awt.Event;import java.awt.MediaTracker;import java.awt.Color;import java.awt.event.KeyListener;import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Container;import java.awt.Toolkit;import java.awt.Image;import java.awt.GraphicsEnvironment;import java.awt.datatransfer.*;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.Transferable;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.event.KeyListener;import java.awt.event.KeyAdapter;import java.awt.event.ActionListener;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.awt.event.MouseAdapter;import java.awt.event.ActionEvent;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 (DataFlavor.javaFileListFlavor.equals(flavors[i])){ 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)4.1.1新建模块的详细设计 ................................................ . (7)4.1.2打开模块的详细设计 ................................................ . (8)4.1.3保存、另存模块的详细设计 ................................................ . (8)4.1.4退出模块的详细设计 ................................................ . (9)4.2编辑模块的详细设计 ................................................ ................................................... (9)4.2.1撤销模块的详细设计 ................................................ . (9)4.2.2剪切模块的详细设计 ................................................ .. (10)4.2.3复制模块的详细设计 ................................................ .. (11)4.2.4粘贴模块的详细设计 ................................................ (11)4.2.5删除模块的详细设计 ................................................ .. (12)4.2.6全选模块的详细设计 ................................................ .. (12)4.2.7查找、替换模块的详细设计 ................................................ .. (13)4.3格式模块的详细设计 ................................................ ................................................... . (14)第5章系统测试 ................................................ ................................................... (15)5.1 程序主界面.................................................................................................... (15)5.2文件界面................................................. ................................................... .. (15)5.3编辑菜单................................................. ................................................... .. (17)第6章小结 ................................................ ................................................... .. (27)参考文献 ................................................ ................................................... . (27)摘要本组课程设计的课题是“记事本的设计与实现”,设计的记事本系统应具有新建、打开、保存、剪切、复制、粘贴、查找、字体设置等基本功能,满足用户对文件的处理,文本文档的编辑和字体的设置等要求。

java课程设计

java课程设计

课程设计(论文)题目名称记事本程序课程名称java 程序设计课程设计学生姓名学号系、专业指导教师2010年1 月3 日摘要本次课程设计的题目是用JA V A语言编写记事本程序,要求是:用图形界面实现;含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。

本程序主要用到了Java swing组件和事件监听器,还用到了文件的输入输出流。

记事本的界面参考了Windows中的记事本界面,并且根据课程设计要求做了适当的调整。

关键词:记事本程序;Java语言;swing组件目录1 问题描述 (3)2 需求分析 (3)3 概要设计 (3)3.1自定义类说明 (3)3.2 程序流程图 (7)4 详细设计 (7)4.1 jishiben类的实现 (7)4.2 GUI程序界面设计 (7)4.3 事件处理 (9)5 测试分析 (12)6 课程设计总结 (16)6.1设计体会 (16)6.2致谢 (16)参考文献 (17)附录(源程序清单) (18)1 问题描述设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。

这次课程设计由卢炜、刘秀春、伍霜霜和我四个人合作完成。

卢炜负责概要设计,刘秀春负责4.1 jishiben类的实现和4.2 GUI程序界面设计,伍霜霜负责5测试分析。

由于4.3事件处理和撰写程序关系密切,这两项都由我负责。

并且根据伍霜霜的测试的结果重新调整程序。

2 需求分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。

(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。

java课程设计记事本设计报告

java课程设计记事本设计报告

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》课程设计》记事本

《Java》课程设计》记事本

《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。

(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。

首先是标准型的记事本,拥有文件、编辑。

格式和帮助。

如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。

如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。

如图三所示。

图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。

如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。

如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。

如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。

课程设计java记事本

课程设计java记事本

课程设计 java记事本一、课程目标知识目标:1. 理解Java基本语法结构,掌握面向对象编程的基本概念;2. 学会使用Java编写简单的记事本程序,理解程序的基本结构;3. 了解Java事件处理机制,掌握基本的用户界面设计方法。

技能目标:1. 能够运用所学知识,独立编写、调试和运行Java记事本程序;2. 培养良好的编程习惯,编写结构清晰、易于维护的代码;3. 学会使用集成开发环境(IDE)进行Java程序开发,提高编程效率。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性,增强自信心;2. 培养学生的团队协作能力,学会与他人分享和交流编程经验;3. 引导学生认识到编程在生活中的实际应用,培养创新意识和实践能力。

课程性质:本课程为实践性较强的Java编程课程,通过编写记事本程序,让学生掌握Java编程的基本知识和技能。

学生特点:学生处于初中或高中年级,具备一定的计算机操作能力和逻辑思维能力。

教学要求:结合学生特点,注重实践操作,激发学生的学习兴趣,培养编程技能,同时关注情感态度价值观的培养。

在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。

二、教学内容1. Java基本语法:变量、数据类型、运算符、控制语句(条件语句、循环语句);2. 面向对象编程:类与对象、构造方法、封装、继承、多态;3. Java事件处理机制:事件监听器、事件适配器、事件处理方法;4. 用户界面设计:窗口、标签、文本框、按钮等组件的使用;5. Java文件操作:文件的读取与写入、文件的保存与打开;6. 集成开发环境(IDE)的使用:Eclipse或IntelliJ IDEA的基本操作与调试技巧。

教学大纲:第一周:Java基本语法及控制语句学习;第二周:面向对象编程基本概念及实现;第三周:Java事件处理机制及用户界面设计;第四周:Java文件操作及记事本程序编写;第五周:实践与调试,完善记事本程序。

java编写的记事本源代码

java编写的记事本源代码

import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.text.*;import javax.swing.event.*;public class IJMFrame extends JFrame {Document document = null;JTextArea textArea = new JTextArea();JScrollPane scrollPane = new JScrollPane(textArea); EditController controller;//------ 定义菜单变量------//JMenuBar menuBar = new JMenuBar();JMenu menuFile = new JMenu("文件");JMenu menuEdit = new JMenu("编辑");JMenu menuFormat = new JMenu("格式"); JPopupMenu memuPopup = new JPopupMenu(); JMenuItem itemNew = new JMenuItem("新建"); JMenuItem itemOpen = new JMenuItem("打开"); JMenuItem itemSave = new JMenuItem("保存"); JMenuItem itemSaveAs = new JMenuItem("另存"); JMenuItem itemExit = new JMenuItem("退出"); JMenuItem itemUndo = new JMenuItem("撤消"); JMenuItem itemCut = new JMenuItem("剪切"); JMenuItem itemCopy = new JMenuItem("复制"); JMenuItem itemPaste = new JMenuItem("粘贴"); JMenuItem itemDelete = new JMenuItem("删除"); JMenuItem itemFind = new JMenuItem("查找"); JMenuItem itemReplace = new JMenuItem("替换"); JMenuItem itemSelectAll = new JMenuItem("全选"); JMenuItem itemFont = new JMenuItem("字体");//------------定义右键菜单------------------------// JMenuItem popupMenu_Undo=new JMenuItem("撤销"); JMenuItem popupMenu_Cut=new JMenuItem("剪切"); JMenuItem popupMenu_Copy=new JMenuItem("复制"); JMenuItem popupMenu_Paste=new JMenuItem("粘贴"); JMenuItem popupMenu_Delete=new JMenuItem("删除"); JMenuItem popupMenu_SelectAll=new JMenuItem("全选");public IJMFrame() {super("记事本");setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setJMenuBar(menuBar);//创建新的菜单栏getContentPane().add(scrollPane);document = textArea.getDocument();textArea.setLineWrap(true);// 默认为换行textArea.setWrapStyleWord(true);//-- 设置菜单--//itemUndo.setEnabled(false);menuBar.add(menuFile);menuBar.add(menuEdit);menuBar.add(menuFormat);menuFile.add(itemNew);menuFile.add(itemOpen);menuFile.add(itemSave);menuFile.add(itemSaveAs);menuFile.addSeparator();menuFile.add(itemExit);menuEdit.add(itemUndo);menuEdit.addSeparator();menuEdit.add(itemCut);menuEdit.add(itemCopy);menuEdit.add(itemPaste);menuEdit.add(itemDelete);menuEdit.addSeparator();menuEdit.add(itemFind);menuEdit.add(itemReplace);menuEdit.add(itemSelectAll);menuFormat.add(itemFont);popupMenu_Undo.setEnabled(false); // 撤消选项初始设为不可用memuPopup.add(popupMenu_Undo);memuPopup.addSeparator();memuPopup.add(popupMenu_Cut);memuPopup.add(popupMenu_Copy);memuPopup.add(popupMenu_Paste);memuPopup.add(popupMenu_Delete);memuPopup.addSeparator();memuPopup.add(popupMenu_SelectAll);//-- 增加菜单的侦听者--//controller = new EditController(this);itemNew.addActionListener(controller);itemOpen.addActionListener(controller);itemSave.addActionListener(controller);itemSaveAs.addActionListener(controller);itemExit.addActionListener(controller);itemUndo.addActionListener(controller);itemCut.addActionListener(controller);itemCopy.addActionListener(controller);itemPaste.addActionListener(controller);itemDelete.addActionListener(controller);itemFind.addActionListener(controller);itemReplace.addActionListener(controller);itemSelectAll.addActionListener(controller);itemFont.addActionListener(controller);popupMenu_Undo.addActionListener(controller);popupMenu_Cut.addActionListener(controller);popupMenu_Copy.addActionListener(controller);popupMenu_Paste.addActionListener(controller);popupMenu_Delete.addActionListener(controller);popupMenu_SelectAll.addActionListener(controller);document.addDocumentListener(controller);document.addUndoableEditListener(controller);addWindowListener(controller);MouseAdapter mAdapter=new MouseAdapter(){public void mousePressed(MouseEvent e) {checkForTriggerEvent(e);}public void mouseReleased(MouseEvent e) {checkForTriggerEvent(e);}private void checkForTriggerEvent(MouseEvent e) {if (e.isPopupTrigger())memuPopup.show(e.getComponent(), e.getX(), e.getY());// 在组件调用者的坐标空间中的位置// X、Y// 显示弹出菜单。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计课程设计名称:专业班级:学生姓名:学号:指导教师:课程设计时间:记事本一、需求分析使用java GUI实现一个记事本程序,实现文本的输入、修改、选择、存储、加载和文字样式的修改。

实现一个窗体程序,得用到我们学过的轻量级组件,然后再窗体里实现对文件的打开、新建、保存、另存为;实现对文本复制,粘贴,剪切,替换,添加日期/时间;为文字提供自动换行、字体。

其中文本替换实现区分大小写替换,为方便实现需要在建立一个窗体;字体提供用户字形、字体、大小变换。

二、概要设计三、运行环境、开发语言开发环境:JDK1.6 记事本主窗文件编辑格式新建打开保存另存复制粘贴剪切时间换行字体替换窗体字体窗体替换文本框开发语言:java语言四、详细设计1 程序清单表1 程序清单文件名功能MainFrame.java 记事本主窗口PFont.java 字体选项窗口Repalce.java 文本替换窗口2 主要代码2.1 文件打开保存文件的打开保存会根据用户是否修改过文本和是否指定存取文件路径开操作。

通过设置一个全局变量String content=“”;来存放文件刚打开时的文本,然后通过比较content和文本区里面的文本内容来提示用户是否保存!if (!content.equals(text.getText())) {//判断文件是否修改,如果修改就保存,没有修改不做操作int value = JOptionPane.showConfirmDialog(jf, "是否保存修改的文件","提醒", JOptionPane.YES_NO_OPTION);if (value == JOptionPane.YES_OPTION) {try {saveFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "保存失败" + e1);}}}通过设置一个全局变量File file=null;来记录用户是否指定文件的存取位置,如果用户没有指定,则调用文件选择框让用户选择存取文件。

if (file == null) { //判断文件是否为空,为空则让用户指定!chooser.showSaveDialog(jf);file = chooser.getSelectedFile();}try {saveFile();} catch (IOException e1) {JOptionPane.showMessageDialog(jf, "保存失败" + e1);}文件操作菜单的截图2.2 文本的复制粘贴剪切,替换,增加日期/时间文本的复制粘贴剪切调用的是JTextArea里的方法完成。

//为剪切注册监听器itCut.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {text.cut();}});//为复制注册监听器itCopy.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.copy();}});//为粘贴注册监听器itPaste.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {text.paste();}});文本的替换实现的是整个文本的文字替换,利用正则表达式来实现区分大小写替换。

char[] ch=sfie1.toCharArray();for(int i=0;i<ch.length;i++){st+="["+Character.toLowerCase(ch[i])+Character.toUpperCase(ch[i])+"]";//正则表达式的实现}String str1=str.replaceAll(sfie1, sfie2);替换窗口增加日期/时间是在文本区最后追加日期时间。

利用SimpleDateFormat和Date类实现SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");text.append(time.format(new Date()));2.3 自动换行和字体自动换行调用JTextArea类里的方法实现。

tAutoLine.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {if(itAutoLine.isSelected())text.setLineWrap(true); //调用JTextArea方法elsetext.setLineWrap(false);}});字体窗口利用JList类让用户选着字形、字体、大小,然后把用户所选的字体信息封装到Font对象里,利用ATextArea里的setFont方法改变文字字体信息。

JButton fontOk= new JButton("确定");fontOk.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int fontStyleConst[] = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };Font tempFont = new Font(tfFont.getText(),fontStyleConst[listStyle.getSelectedIndex()],Integer.parseInt(tfSize.getText()));//封装用户选着的字体信息到Font里面,并设置到文本区text.setFont(tempFont);//jf.dispose();}});字体窗口截图五、调试与分析在进行调试编写程序的时候遇到了标志字段的问题,什么时候该加final,什么时候该加static,总是程序报错的时候才发现问题,后来在程序错误的提醒来,一步步完成标志字段的问题。

在程序逻辑问题上主要是文本区里的内容是否被修改,是否该提醒用户保存,后来用了个全局变量来存放原始的文本,通过比较这个变量跟文本区里的文本来判断是否提醒用户保存。

六、功能测试文本已被修改,提醒用户保存。

文本替换,提供区分大小写替换前替换后字体修改修改前修改后七、结论与心得遇到了很多不知道的方法和类,通过查API和上网搜索解决了问题。

我学到了窗口怎能弹对话框,怎么弹文件选择框,刚开始不怎么会用这些类,后来查查API和翻书就略懂了。

我觉得我写的这个记事本要是能实现查找,改变字体和背景颜色,提供状态栏就好了,可惜时间和技术有限!八、参考资料[1] Java程序设计与实验,刘继承,清华大学出版社,2012[2] [3] Java TM Platform Standard Edition 6 的 API源代码:MainFrame.javaimport java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.filechooser.FileNameExtensionFilter;public class MainFrame {static String content="";JTextArea text;JFileChooser chooser;File file = null;final JFrame jf;MainFrame() {// JOptionPane dialog=new JOPtionPane();jf = new JFrame();JMenuBar bar = new JMenuBar();jf.setSize(600, 400);JMenu mFile = new JMenu(" 文件 ");JMenu mEdit = new JMenu(" 编辑 ");JMenu mForm = new JMenu(" 格式 ");JMenuItem itCreat = new JMenuItem("新建");JMenuItem itOpen = new JMenuItem("打开");JMenuItem itSave = new JMenuItem("保存");JMenuItem itOSave = new JMenuItem("另存为");JMenuItem itExit = new JMenuItem("退出");JMenuItem itCopy = new JMenuItem("复制");JMenuItem itPaste = new JMenuItem("粘贴");JMenuItem itCut = new JMenuItem("剪切");JMenuItem itRepalce = new JMenuItem("替换");JMenuItem itadd = new JMenuItem("日期/时间");final JCheckBoxMenuItem itAutoLine = new JCheckBoxMenuItem("自动换行");JMenuItem itFont = new JMenuItem("字体");mFile.add(itCreat);mFile.add(itOpen);mFile.add(itSave);mFile.add(itOSave);mFile.add(itExit);mEdit.add(itCopy);mEdit.add(itPaste);mEdit.add(itCut);mEdit.add(itRepalce);mEdit.add(itadd);mForm.add(itAutoLine);mForm.add(itFont);bar.add(mFile);bar.add(mEdit);bar.add(mForm);jf.setJMenuBar(bar);jf.setVisible(true);text = new JTextArea(1, 2);jf.add(new JScrollPane(text));// 变量初始化content = new String("");chooser = new JFileChooser(".");FileNameExtensionFilter filter = new FileNameExtensionFilter(null,"txt");chooser.addChoosableFileFilter(filter);// 注册监听器// 给创建注册监听器itCreat.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if (!content.equals(text.getText())) {int value = JOptionPane.showConfirmDialog(jf, "是否保存修改的文件","提醒", JOptionPane.YES_NO_OPTION);if (value == JOptionPane.YES_OPTION) {try {saveFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "保存失败 " + e1);}}}text.setText("");jf.setTitle("新建文本");file = null;}});// 给打开注册事件监听器itOpen.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if (!content.equals(text.getText())) {int value = JOptionPane.showConfirmDialog(jf, "是否保存修改的文件","提醒", JOptionPane.YES_NO_OPTION);if (value == JOptionPane.YES_OPTION) {try {saveFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "保存失败 " + e1);}}}chooser.showOpenDialog(jf);file = chooser.getSelectedFile();if (file == null) {JOptionPane.showMessageDialog(jf, "没有选择文件");return;}try {getTextFromFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "打开失败 " + e1);}}});// 给保存注册事件监听器itSave.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {if (file == null) {chooser.showSaveDialog(jf);file = chooser.getSelectedFile();}try {saveFile();} catch (IOException e1) {JOptionPane.showMessageDialog(jf, "保存失败 " + e1);}jf.setTitle(file.getName());}});//另存为注册监听事件itOSave.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {chooser.showDialog(jf, "另存为");file=chooser.getSelectedFile();try {saveFile();} catch (IOException e1) {JOptionPane.showMessageDialog(jf, "保存失败 " + e1);}}});//itExit.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {if (!content.equals(text.getText())) {int value = JOptionPane.showConfirmDialog(jf, "是否保存修改的文件","提醒", JOptionPane.YES_NO_OPTION);if (value == JOptionPane.YES_OPTION) {try {saveFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "保存失败 " + e1);}}}System.exit(0);}});//为剪切注册监听器itCut.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {text.cut();}});//为复制注册监听器itCopy.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {text.copy();}});//为粘贴注册监听器itPaste.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {text.paste();}});//为替换注册监听器itRepalce.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new Repalce(text);}});//为时间/日期注册监听器itadd.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");text.append(time.format(new Date()));}});//为自动换行注册监听器itAutoLine.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {if(itAutoLine.isSelected())text.setLineWrap(true);elsetext.setLineWrap(false);}});//为字体注册监听器itFont.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new PFont(text);}});//默认退出jf.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubif (!content.equals(text.getText())) {int value = JOptionPane.showConfirmDialog(jf, "是否保存修改的文件","提醒", JOptionPane.YES_NO_OPTION);if (value == JOptionPane.YES_OPTION) {try {saveFile();} catch (IOException e1) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(jf, "保存失败 " + e1);}}}System.exit(0);}});}/*** 将file指向的文件写入文本区** @throws IOException*/public void getTextFromFile() throws IOException {content = "";String line = "";BufferedReader reader = new BufferedReader(new FileReader(file));while ((line = reader.readLine()) != null) {content += line + "\r\n";}text.setText(content);reader.close();}/*** 将文本区的内容保存到file指向的文件** @throws IOException*/public void saveFile() throws IOException {if (file == null) {chooser.showSaveDialog(jf);file = chooser.getSelectedFile();}content = text.getText();FileWriter out = new FileWriter(file);out.write(content);out.close();}public static void main(String[] args) {new MainFrame();}}PFont.javaimport java.awt.Dimension;import java.awt.Font;import java.awt.GraphicsEnvironment;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;public class PFont {JFrame jf;JPanel pane1, pane2, pane3, pane4;JTextField tfFont, tfSize, tfStyle;JList listStyle, listFont, listSize;PFont(final JTextArea text) {jf = new JFrame("字体设置");pane1 = new JPanel();pane2 = new JPanel();pane3 = new JPanel();pane4 = new JPanel();Font currentFont = text.getFont();JLabel lbFont = new JLabel("字体");JLabel lbStyle = new JLabel("字形");JLabel lbSize = new JLabel("大小");lbFont.setPreferredSize(new Dimension(91, 20));lbStyle.setPreferredSize(new Dimension(82, 20));lbSize.setPreferredSize(new Dimension(100, 20));//默认字体tfFont = new JTextField(13);tfFont.setText(currentFont.getFontName());tfFont.setPreferredSize(new Dimension(200, 20));//默认字形tfStyle = new JTextField(10);if (currentFont.getStyle() == Font.PLAIN)tfStyle.setText("常规");else if (currentFont.getStyle() == Font.BOLD)tfStyle.setText("粗体");else if (currentFont.getStyle() == Font.ITALIC)tfStyle.setText("斜体");else if (currentFont.getStyle() == (Font.BOLD + Font.ITALIC)) tfStyle.setText("粗斜体");tfStyle.setPreferredSize(new Dimension(200, 20));//默认大小tfSize = new JTextField(7);tfSize.setText(currentFont.getSize() + "");tfSize.setPreferredSize(new Dimension(200, 20));//字形final String fontStyle[] = { "常规", "粗体", "斜体", "粗斜体" };listStyle = new JList(fontStyle);listStyle.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);if (currentFont.getStyle() == Font.PLAIN)listStyle.setSelectedIndex(0);else if (currentFont.getStyle() == Font.BOLD)listStyle.setSelectedIndex(1);else if (currentFont.getStyle() == Font.ITALIC)listStyle.setSelectedIndex(2);else if (currentFont.getStyle() == (Font.BOLD + Font.ITALIC)) listStyle.setSelectedIndex(3);listStyle.setVisibleRowCount(7);listStyle.setFixedCellWidth(85);listStyle.setFixedCellHeight(20);listStyle.addListSelectionListener(new ListSelectionListener() {public void valueChanged(ListSelectionEvent event) {tfStyle.setText(fontStyle[listStyle.getSelectedIndex()]);}});//字体GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();final String fontName[] = ge.getAvailableFontFamilyNames();int defaultFontIndex = 0;for (int i = 0; i < fontName.length; i++) {if (fontName[i].equals(currentFont.getFontName())) {defaultFontIndex = i;break;}}listFont = new JList(fontName);listFont.setSelectedIndex(defaultFontIndex);listFont.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);listFont.setVisibleRowCount(7);listFont.setFixedCellWidth(99);listFont.setFixedCellHeight(20);listFont.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent event) {tfFont.setText(fontName[listFont.getSelectedIndex()]);}});//字体大小final String fontSize[] = { "8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26", "28", "36", "48", "72" };listSize = new JList(fontSize);int defaultFontSizeIndex = 0;for (int i = 0; i < fontSize.length; i++) {if (fontSize[i].equals(currentFont.getSize() + "")) {defaultFontSizeIndex = i;break;}}listSize.setSelectedIndex(defaultFontSizeIndex);listSize.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);listSize.setVisibleRowCount(7);listSize.setFixedCellWidth(50);listSize.setFixedCellHeight(20);listSize.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent event) {tfSize.setText(fontSize[listSize.getSelectedIndex()]);}});//按钮JButton fontOk= new JButton("确定");fontOk.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int fontStyleConst[] = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };Font tempFont = new Font(tfFont.getText(), fontStyleConst[listStyle.getSelectedIndex()],Integer.parseInt(tfSize.getText()));text.setFont(tempFont);//jf.dispose();}});JButton cancel = new JButton("取消");cancel.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jf.dispose();}});//添加pane1.add(lbFont);pane1.add(lbStyle);pane1.add(lbSize);pane2.add(tfFont);pane2.add(tfStyle);pane2.add(tfSize);pane3.add(new JScrollPane(listFont));pane3.add(new JScrollPane(listStyle));pane3.add(new JScrollPane(listSize));pane4.add(fontOk);pane4.add(cancel);jf.setLayout(new GridLayout(4,1));jf.add(pane1);jf.add(pane2);jf.add(pane3);jf.add(pane4);jf.setSize(400, 600);jf.setLocation(200, 200);//jf.setResizable(false);jf.setVisible(true);}public static void main(String[] args) {// TODO Auto-generated method stub}}Repalce.javaimport java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JTextArea;import javax.swing.JTextField;public class Repalce {boolean boo = false;JTextArea area;JTextField fie;JTextField fie1;Repalce(final JTextArea area) {this.area=area;JFrame jf = new JFrame();jf.setVisible(true);jf.setSize(400, 200);jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);fie = new JTextField(15);fie1 = new JTextField(15);JButton jb = new JButton("全部替换");JLabel jl = new JLabel("查找内容:");JLabel jl1 = new JLabel("替换为:");JRadioButton jr = new JRadioButton("区分大小写");JPanel jp = new JPanel();jp.setLayout(new GridLayout(3, 2));JPanel jp0 = new JPanel();jp0.add(jl);jp.add(jp0);JPanel jp01 = new JPanel();jp01.add(fie);jp.add(jp01);JPanel jp1 = new JPanel();jp1.add(jl1);jp.add(jp1);JPanel jp11 = new JPanel();jp11.add(fie1);jp.add(jp11);JPanel jpr = new JPanel();jpr.add(jr);jp.add(jpr);JPanel jp2 = new JPanel();jp2.add(jb);jp.add(jp2);jf.add(jp);jr.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {boo = (boo == true) ? false : true;System.out.println(boo);}});jb.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String str=tihuan();area.setText(str);}});}protected String tihuan() {// TODO Auto-generated method stubString str,sfie1,sfie2;str=area.getText();sfie1=fie.getText().toLowerCase();sfie2=fie1.getText();if(boo==false){String st="";char[] ch=sfie1.toCharArray();for(int i=0;i<ch.length;i++){st+="["+Character.toLowerCase(ch[i])+Character.toUpperCase(ch[i]) +"]";}sfie1=st;}String str1=str.replaceAll(sfie1, sfie2);System.out.println(sfie1+" "+sfie2+"\r\n"+str1);return str1;}}。

相关文档
最新文档