Java记事本电子档.docx
- 文档编号:8998427
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:26
- 大小:81.93KB
Java记事本电子档.docx
《Java记事本电子档.docx》由会员分享,可在线阅读,更多相关《Java记事本电子档.docx(26页珍藏版)》请在冰豆网上搜索。
Java记事本电子档
前言
记事本是一种简单的文字处理软件,它虽然没有Word文档强大的文字编辑以及图片处理功能,但是“记事本”却拥有一个Word不可能拥有的优点:
打开速度快,文件小。
我相信对于这一点大家一定是深有感触地,一点就打开;同样的文本文件用Word保存和用记事本保存的文件大小就大不相同。
所以,记事本在计算机应用中是必不可少的。
第一章开发背景
1.1系统设计目的
1)设计一个简单的记事本程序,可以实现以下功能:
1:
文件的新建,打开,保存和另存
2:
对文件的编辑,如添加日期,简单的加密处理等等
3:
对文档格式的编辑,包括自动换行和修改字体颜色
4:
在新建、打开、关闭文档时,判断现有文档是否已被修改。
若无修改则继续操作,若有修改则先询问用户是否保存
2)通过这次程序设计
1:
提高对Java语言设计的掌握能力
2:
理论联系实际,进一步提高软件开发技术;
3:
培养独立思考,分析需求的能力
1.2编写工具
本程序是用了JBuilder,实现:
Jbuilder简介:
JBuilder是Borland公司开发的针对java的开发工具,使用JBuilder将可以快速,有效的开发各类java应用,它使用的JDK与sun公司标准的JDK不同,它经过了较多的修改,以便开发人员能够像开发Delphi应用那样开发java应用。
JBuilder的核心有一部分采用了VCL技术,使得程序的条理非常清晰,就算是初学者,也能完整的看完整个代码。
JBuilder另一个特点是简化了团队合作,它采用的互联网工作室技术使不同地区,甚至不同国家的人联合开发一个项目成为了可能。
简单介绍一下Jbuilder的特点:
1:
Jbuilder支持最新的Java技术,包括Applets、JSP/Servlets、JavaBean以及EJB(EnterpriseJavaBeans)的应用。
2:
用户可以自动地生成基于后端数据库表的EJBJava类,Jbuilder同时还简化了EJB的自动部署功能.此外它还支持CORBA,相应的向导程序有助于用户全面地管理IDL(分布应用程序所必需的接口定义语言InterfaceDefinitionLanguage)和控制远程对象。
3:
Jbuilder支持各种应用服务器。
Jbuilder与InpriseApplicationServer紧密集成,同时支持WebLogicServer,支持EJB1.1和EJB2.0,可以快速开发J2EE的电子商务应用。
4:
Jbuilder能用Servlet和JSP开发和调试动态Web应用。
5:
利用Jbuilder可创建(没有专有代码和标记)纯Java2应用。
由于Jbuilder是用纯Java语言编写的,其代码不含任何专属代码和标记,它支持最新的Java标准。
6:
Jbuilder拥有专业化的图形调试介面,支持远程调试和多线程调试,调试器支持各种JDK版本,包括J2ME/J2SE/J2EE。
JBuilder环境开发程序方便,它是纯的Java开发环境,适合企业的J2EE开发;缺点是往往一开始人们难于把握整个程序各部分之间的关系,对机器的硬件要求较高,比较吃内存,这时运行速度显得较慢。
2.2源程序主体内容
Application1.java
packageapp;
importjava.awt.Toolkit;
importjavax.swing.SwingUtilities;
importjavax.swing.UIManager;
importjava.awt.Dimension;
/**
*
Title:
*
*
Description:
*
*
Copyright:
Copyright(c)2007
*
*
Company:
*
*@authornotattributable
*@version1.0
*/
publicclassApplication1{
booleanpackFrame=false;
/**
*Constructandshowtheapplication.
*/
publicApplication1(){
Frame1frame=newFrame1();
//Validateframesthathavepresetsizes
//Packframesthathaveusefulpreferredsizeinfo,e.g.fromtheirlayout
if(packFrame){
frame.pack();
}else{
frame.validate();
}
//Centerthewindow
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
DimensionframeSize=frame.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width>screenSize.width){
frameSize.width=screenSize.width;
}
frame.setLocation((screenSize.width-frameSize.width)/2,
(screenSize.height-frameSize.height)/2);
frame.setVisible(true);
}
/**
*Applicationentrypoint.
*
*@paramargsString[]
*/
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){
publicvoidrun(){
try{
UIManager.setLookAndFeel(UIManager.
getSystemLookAndFeelClassName());
}catch(Exceptionexception){
exception.printStackTrace();
}
newApplication1();
}
});
}
}
Fram1.java
packageapp;
importjava.awt.Dimension;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JFileChooser;
importjavax.swing.JColorChooser;
importjavax.swing.JMenuBar;
importjavax.swing.JTextArea;
importjavax.swing.JMenu;
importjavax.swing.JMenuItem;
importjava.awt.event.ActionEvent;
importjava.awt.event.WindowEvent;
importjava.awt.event.ActionListener;
importjava.awt.GridLayout;
importjava.awt.Color;
importjavax.swing.JOptionPane;
importjava.io.*;
importjavax.swing.JCheckBoxMenuItem;
importjavax.swing.JScrollPane;
importjava.text.SimpleDateFormat;
importjava.awt.*;
importjava.util.Date;
importjava.awt.event.WindowAdapter;
/**
*
Title:
*
*
Description:
*
*
Copyright:
Copyright(c)2007
*
*
Company:
*
*@authornotattributable
*@version1.0
*/
publicclassFrame1extendsJFrame{
JPanelcontentPane;
JFileChooserjFileChooser1=newJFileChooser();
JMenuBarjMenuBar1=newJMenuBar();
JTextAreaText=newJTextArea();
JMenujMenu1=newJMenu();
JMenuItemjMenuItem1=newJMenuItem();
JMenuItemjMenuItem2=newJMenuItem();
JMenujMenu2=newJMenu();
JMenuItemjMenuItem3=newJMenuItem();
JMenuItemjMenuItem4=newJMenuItem();
JMenuItemjMenuItem7=newJMenuItem();
JMenujMenu3=newJMenu();
JMenuItemjMenuItem8=newJMenuItem();
JMenuItemjMenuItem9=newJMenuItem();
JOptionPanejOptionPane1=newJOptionPane();
StringBuffera=newStringBuffer();
StringBufferreadFile=newStringBuffer();
JMenuItemjMenuItem10=newJMenuItem();
StringoldValue;//存放原来的文本
FilesaveFileName=null,fileName=null;//保存的文件名
booleanisNewFile=true;//判断是否新文件(
FilecurrentFile;//当前文件名
JMenujMenu4=newJMenu();
JMenujMenu5=newJMenu();
JMenuItemjMenuItem11=newJMenuItem();
JMenuItemjMenuItem6=newJMenuItem();
JMenuItemjMenuItem12=newJMenuItem();
JMenujMenu6=newJMenu();
JMenujMenu7=newJMenu();
JCheckBoxMenuItemjCheckBoxMenuItem1=newJCheckBoxMenuItem();
GridLayoutgridLayout1=newGridLayout();
JMenujMenu8=newJMenu();
JMenuItemjMenuItem5=newJMenuItem();
publicFrame1(){
try{
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}catch(Exceptionexception){
exception.printStackTrace();
}
}
publicvoidsaveFile(){
try{
FileWriterfw=newFileWriter(saveFileName);
fw.write(Text.getText());
fw.close();
}catch(Exceptione){
}
}
/**
*Componentinitialization.
*
*@throwsjava.lang.Exception
*/
privatevoidjbInit()throwsException{
contentPane=(JPanel)getContentPane();
this.setJMenuBar(jMenuBar1);
setSize(newDimension(542,402));
setTitle("记事本");
this.addWindowListener(newFrame1_this_windowAdapter(this));
jMenu1.setText("文件");
jMenuItem1.setText("打开");
jMenuItem1.addActionListener(newFrame1_jMenuItem1_actionAdapter(this));
jMenuItem2.setText("保存");
jMenuItem2.addActionListener(newFrame1_jMenuItem2_actionAdapter(this));
jMenu2.setText("编辑");
jMenuItem3.addActionListener(newFrame1_jMenuItem3_actionAdapter(this));
jMenuItem3.setText("新建");
jMenuItem4.setText("退出");
jMenuItem4.addActionListener(newFrame1_jMenuItem4_actionAdapter(this));
jMenuItem7.setText("日期/时间");
jMenuItem7.addActionListener(newFrame1_jMenuItem7_actionAdapter(this));
jMenu3.setText("可编辑");
jMenuItem8.setText("锁定");
jMenuItem8.addActionListener(newFrame1_jMenuItem8_actionAdapter(this));
jMenuItem9.setText("解锁");
jMenuItem9.addActionListener(newFrame1_jMenuItem9_actionAdapter(this));
jMenuItem10.setText("另存为");
jMenuItem10.addActionListener(newFrame1_jMenuItem10_actionAdapter(this));
jMenu4.setText("格式");
jMenu5.setText("颜色");
jMenuItem11.setText("背景颜色");
jMenuItem11.addActionListener(newFrame1_jMenuItem11_actionAdapter(this));
jMenuItem6.setText("字体颜色");
jMenuItem6.addActionListener(newFrame1_jMenuItem6_actionAdapter(this));
jMenu6.setText("自动换行");
jCheckBoxMenuItem1.setText("自动换行");
jCheckBoxMenuItem1.addActionListener(new
Frame1_jCheckBoxMenuItem1_actionAdapter(this));
contentPane.setLayout(gridLayout1);
jMenu8.setText("帮助");
jMenuItem5.setText("关于");
jMenuItem5.addActionListener(newFrame1_jMenuItem5_actionAdapter(this));
jMenuBar1.add(jMenu1);
jMenuBar1.add(jMenu2);
jMenuBar1.add(jMenu4);
jMenuBar1.add(jMenu8);
jMenu1.add(jMenuItem3);
jMenu1.add(jMenuItem1);
jMenu1.add(jMenuItem2);
jMenu1.add(jMenuItem10);
jMenu1.add(jMenuItem4);
jMenu2.add(jMenuItem7);
jMenu2.add(jMenu3);
jMenu3.add(jMenuItem8);
jMenu3.add(jMenuItem9);
jMenu4.addSeparator();
jMenu4.add(jCheckBoxMenuItem1);
jMenu4.add(jMenu5);
jMenu5.add(jMenuItem6);
jMenu5.add(jMenuItem11);
contentPane.add(Text,null);
contentPane.add(newJScrollPane(Text));
jMenu8.add(jMenuItem5);
oldValue=Text.getText();
}
publicvoidjMenuItem1_actionPerformed(ActionEvente){//打开功能
StringcurrentValue=Text.getText();//得到文本内容
booleanisTextChange=(currentValue.equals(oldValue))?
false:
true;//判断文本是否有改动
if(isTextChange){
intsaveChoose=JOptionPane.showConfirmDialog(this,
"文件尚未保存。
是否保存?
","提示",JOptionPane.YES_NO_CANCEL_OPTION);
if(saveChoose==JOptionPane.YES_OPTION){
JFileChooserfileChooser=newJFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("另存为");
intresult=fileChooser.showSaveDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
return;
}
saveFileName=fileChooser.getSelectedFile();
if(saveFileName==null||saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",
JOptionPane.ERROR_MESSAGE);
else{
saveFile();
isNewFile=false;
currentFile=saveFileName;
oldValue=Text.getText();
this.setTitle(saveFileName.getName()+"-记事本");
}
}elseif(saveChoose==JOptionPane.NO_OPTION){
Stringstr=null;
JFileChooserfileChooser=newJFileChooser();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setApproveButtonText("确定");
fileChooser.setDialogTitle("打开文件");
intresult=fileChooser.showOpenDialog(this);
if(result==JFileChooser.CANCEL_OPTION){
return;
}
fileName=fileChooser.getSelectedFile();
if(fileName==null||fileName.getName().equals(""))
JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",
JOptionPane.ERROR_MESSAGE);
else{
try{
FileReaderfr=newFileReader(fileName);
BufferedReaderbfr=newBufferedReader(fr);
Text.setText("");
while((str=bfr.readLine())!
=null){//每次读取一行,直到文件结束
Text.append(str+"\15\12");
}//endwhile
this.setTitle(fileName.getName()+"-记事本");
fr.close();
isNewFile=false;
currentFile=fileName;
oldValue=Text.getText();
}catch(IOExceptionioException){
}
}
}else{
return;
}
}
else{
Stringstr=null;
JFileChooserfileChooser=newJFileChooser();
fil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 记事本 电子