记事本应用程序java源代码

package aaa;

/* AWT Sample application "记事本应用程序java源代码"

* @author Amiry

* @version 1.00 07/05/25

*/

import java.awt.*; //导入抽象窗口工具集包(abstract window toolkit)

import java.awt.event.*; //导入窗口事件工具包

import java.io.*; //导入输入输出工具包

import java.awt.datatransfer.*; //导入数据转化工具包

//菜单工具条类(添加菜单项,子菜单)

class MyMenuBar extends MenuBar{//MyMenuBar类继承MenuBar类(类方法)

public MyMenuBar(Frame parent){ //构造函数

parent.setMenuBar(this); //向parent添加自身

}

public void addMenus(String[] menus){ //菜单条下添加菜单项

for(int i=0;i<menus.length;i++)

add(new Menu(menus[i]));

}

public void addMenuItems(intmenuNumber,String[] items){ //菜单添加(类方法)

for(int i=0;i<items.length;i++){ //循环0~menus.length-1次

if(items[i]!=null) //向各个菜单项添加子菜单

getMenu(menuNumber).add(newMenuItem(items[i]));

else getMenu(menuNumber).addSeparator();

}

}

public voidaddActionListener(ActionListener a1){//注册所有动作监听对象(类方法)

for(int i=0;i<getMenuCount();i++) //循环到菜第i个菜单数

for(intj=0;j<getMenu(i).getItemCount();j++) //向第i个菜单的第j个子菜单注册动作事件监听

getMenu(i).getItem(j).addActionListener(a1);

}

}

//文件管理类(处理文件的打开,保存等,拥有文件对话框成员)

class MyFile{ //MyFile类定义

private FileDialog fDlg; //声明一个文件对话框(类成员)

public MyFile(Frame parent){ //构造函数(类方法)

fDlg=newFileDialog(parent,"",FileDialog.LOAD);//初始化文件对话框

}

private String getPath(){ //(类方法)

returnfDlg.getDirectory()+"\\"+fDlg.getFile(); //返回选中文件的路径

}

public String getData() throws IOException{

fDlg.setTitle("打开"); //设定文件对话框的标题为"打开"

fDlg.setMode(FileDialog.LOAD); //将文件对话框的模式设定为打开模式

fDlg.setVisible(true); //显示文件对话框

//读取文件对话框选中的文件的内容并将其返回

BufferedReader br=new BufferedReader(newFileReader(getPath()));

StringBuffer sb=new StringBuffer();

String aline;

while((aline=br.readLine())!=null)

sb.append(aline+'\n');

br.close();

return sb.toString();

}

public void setData(String data) throwsIOException{

//显示保存模式对话框,并将数据data存入选中的文件中

fDlg.setTitle("保存");

fDlg.setMode(FileDialog.LOAD);

fDlg.setVisible(true);

BufferedWriter bw=new BufferedWriter(newFileWriter(getPath()));

bw.write(data);

bw.close();

}

}

//文本管理类(提供记事本的剪贴,复制,粘贴等功能)

class MyClipboard{ //获取系统剪贴板

private Clipboard cb; //声明剪贴板对象

public MyClipboard(){ //构造函数,获取系统剪贴板

cb=Toolkit.getDefaultToolkit().getSystemClipboard();

}

public void setData(String data){ //将字符串存入剪贴板

cb.setContents(newStringSelection(data),null);

}

public String getData(){ //从剪贴板读取数据,并将其返回

Transferable content=cb.getContents(null);

try{

return(String)content.getTransferData(DataFlavor.stringFlavor);

}catch(Exception ue){}

return null;

}

}

//查找替换类(用于查找TextArea中特定字符串功能,并替换特定字符串

class MyFindDialog extends Dialogimplements ActionListener{

private Label lFind=new Label("查找字符串");

private Label lReplace=new Label("替换字符串");

private TextField tFind=new TextField(10);//接受待查字符串TextField

private TextField tReplace=newTextField(10); //接受要替换字符串TextField

private Button bFind=new Button("查找"); //创建查找按钮

private Button bReplace=new Button("替换"); //替换按钮

private TextArea ta; //ta为含有待查字符串的TextField

public MyFindDialog(Frame owner,TextAreata){ //构造函数

super(owner,"查找",false); //非模式对话框

this.ta=ta;

setLayout(null); //将Layout设为null

//设定组件的位置大小(横坐标,纵坐标,高,宽)

lFind.setBounds(10,30,80,20);

lReplace.setBounds(10,70,80,20);

tFind.setBounds(90,30,90,20);

tReplace.setBounds(90,70,90,20);

bFind.setBounds(190,30,80,20);

bReplace.setBounds(190,70,80,20);

add(lFind); //添加各个组件

add(tFind);

add(bFind);

add(lReplace);

add(tReplace);

add(bReplace);

setResizable(false); //禁止用户更改对话框大小

bFind.addActionListener(this); //为bFind添加监听对象

addWindowListener(new WindowAdapter(){ //为对话框注册关闭窗口事件监听器

public void windowClosing(WindowEvent e){

MyFindDialog.this.dispose();

}

});

}

public void showFind(){

setTitle("查找"); //将对话框标题设为"查找"

setSize(280,60); //将对话框设定为合适大小

setVisible(true);

}

public void showReplace(){

setTitle("查找替换"); //标题:"查找替换"

setSize(280,110); //设定大小

setVisible(true);

}

private void find(){ //查询方法

String text=ta.getText(); //从ta中获取字符串,并存入text中

String str=tFind.getText(); //获取tFind字符串,并存入text中

int end=text.length(); //获取ta字符串的长度

int len=str.length(); //获取tFind字符串的长度

int start=ta.getSelectionEnd(); //从关标位置开始查找字符串

if(start==end)start=0; //若关标位于末尾,则从头开始查找

for(;start<=end-len;start++){

if(text.substring(start,start+len).equals(str)){//若找到查找字符串

ta.setSelectionStart(start); //选中并显示字符串

ta.setSelectionEnd(start+len);

return; //退出方法

}

}

ta.setSelectionStart(end); //若找不到待查字符串,则将光标置于末尾

ta.setSelectionEnd(end);

}

private void replace(){ //替换方法

String str=tReplace.getText(); //获取待查字符串

if(ta.getSelectedText().equals(tFind.getText()))//若相同则替换

ta.replaceRange(str,ta.getSelectionStart(),ta.getSelectionEnd());//若不同则继续查找

else find();

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==bFind) //按下"查找"按钮,调用find()方法

find();

else if(e.getSource()==bReplace) //按下"替换"按钮,调用replace()方法

replace();

}

}

public class MyMemo extends Frameimplements ActionListener{

private TextArea editor=new TextArea(); //创建文本编辑区

private MyFile mf=new MyFile(this); //创建文件

private MyClipboard cb=new MyClipboard();//创建剪贴板

private MyFindDialog findDlg=newMyFindDialog(this,editor);//创建查找对话框

public MyMemo(String title){

//构造函数,调用父类的构造函数设定标题

super(title);

//创建菜单条

MyMenuBar mb=new MyMenuBar(this);

//向菜单条中菜单添加文件,编辑,查找,帮助4个菜单项

mb.addMenus(new String[]{"文件","编辑","查找","帮助"});

//向每个菜单添项加子菜单

mb.addMenuItems(0,new String[]{"新建","打开","保存","null","退出" });

mb.addMenuItems(1,new String[]{"剪贴","复制","粘贴","清除","null","全选" });

mb.addMenuItems(2,new String[]{"查找","null","查找替换"});

mb.addMenuItems(3,new String[]{"我的记事本信息"});

add(editor);

mb.addActionListener(this);

addWindowListener(new WindowAdapter(){ //关闭"记事本"代码

public void windowClosing(WindowEvent e){

MyMemo.this.dispose();

}

});

}

public void actionPerformed(ActionEvent e){//事件执行方法

String selected=e.getActionCommand(); //获取命令

if(selected.equals("新建")) //执行"新建"命令

editor.setText("");

else if(selected.equals("打开")){ //执行"打开"命令

try{ //可能出现异常

editor.setText(mf.getData());

}catch(IOException ie){}

}else if(selected.equals("保存")){ //执行"保存"命令

try{ //可能出现异常

mf.setData(editor.getText());

}catch(IOException ie){}

}else if(selected.equals("退出")){ //执行"退出"命令

dispose();

}

else if(selected.equals("剪贴")){ //执行"剪贴"命令

cb.setData(editor.getSelectedText());

editor.replaceRange("",editor.getSelectionStart(),editor.getSelectionEnd());

}

else if(selected.equals("复制")){ //执行"复制"命令

cb.setData(editor.getSelectedText());

}

else if(selected.equals("粘贴")){ //执行"粘贴"命令

String str=cb.getData();

editor.replaceRange(str,editor.getSelectionStart(),editor.getSelectionEnd());

}

else if(selected.equals("清除")){ //执行"清除"命令

editor.replaceRange("",editor.getSelectionStart(),editor.getSelectionEnd());

}

else if(selected.equals("全选")){ //执行"全选"命令

editor.setSelectionStart(0);

editor.setSelectionEnd(editor.getText().length());

}

else if(selected.equals("查找")){ //执行"查找"命令

findDlg.showReplace();

}

else if(selected.equals("查找替换")){ //执行"查找替换"命令

findDlg.showReplace();

}

}

public static void main(String[] args) { //主函数体

MyMemo memo=new MyMemo("我的记事本"); //创建我的记事本

memo.setSize(300,300); //大小宽300,高300

memo.setVisible(true); //显示窗口

}

}

java写windows记事本源代码,具体功能如下: 1.文件(F) 可以通过点击菜单或快捷键(alt + F)打开菜单页 1.1新建(N) 菜单内点击或助记符N或快捷键(ctrl + N) 点击后弹出对话框,询问是否保存到***.txt? 点击保存(S):保存文本并关闭,再新建新的文本 点击不保存(N):不保存文本并关闭,再新建新的文本 点击取消:取消新建操作 1.2打开(O) 菜单内点击或助记符O或快捷键(ctrl + O) 点击后弹出对话框,询问是否保存到***.txt? 点击保存(S):保存文本,弹出选择文件对话框 点击不保存(N):不保存文本,弹出选择文件对话框 ==》选择文件对话框: 选择打开(O):就打开新的文本 选择取消:取消打开操作,返回原文本 点击取消:取消打开操作 1.3保存(S) 菜单内点击或助记符S或快捷键(ctrl + S) 点击后保存文本内容 1.4另存为(A) 菜单内点击或助记符A 点击后打开另存为对话框,选择路径和设置文件名 选择保存(S):就会在该路径保存文本,原文本内容不会保存并关闭,打开另存的文本 取消:取消另存为操作,返回原文本 1.5页面设置(U)(只实现页面边距,其他未实现) 菜单内点击或助记符U 点击后打开页面设置对话框:可以设置一下内容 纸张:大小(Z)、来源(S) 方向:纵向(O)、横向(A) 页面边距(毫米):左(L)右(R)上(T)下(B) 页眉(H)、页脚(F)、预览:(图片) 选择确定:保存新的页面设置 选择取消:取消页面设置 1.6打印(P)(改功能未完全实现,使用可能会报错) 菜单内点击或助记符P或快捷键(ctrl + P) 点击后弹出打印对话框 1.7退出(X) 菜单内点击或助记符X 点击后退出本文本文件 2.编辑(E) 可以通过点击菜单或快捷键(alt + E)打开菜单页 2.1撤销(U) 菜单内点击或助记符U或快捷键(ctrl + Z) 响应后返回上一步操作 2.2剪切(T) 菜单内点击或助记符T或快捷键(ctrl + X) 响应后光标选中的内容提取到剪贴板,并删除该内容,光标定位在元初识位置 2.3复制(C) 菜单内点击或助记符C或快捷键(ctrl + C) 响应后光标选中内容提取到剪贴板,光标位置保持不变 2.4粘贴(P) 菜单内点击或助记符P或快捷键(ctrl + V) 响应后光标选中的内容被替换为剪贴板的内容,光标选中刚刚粘贴的内容 2.5删除(L) 菜单内点击或助记符L或快捷键(DEL) 响应后删除光标选中的内容 2.6查找(F) 菜单内点击或助记符F或快捷键(ctrl + F) 响应后弹出查找对话框:输入查找的内容,可以选择区分大小写和选择查找的方向 点击查找之后光标会选中响应的查找内容,没找到会弹出找不到对话框 2.7查找下一个(N) 菜单内点击或助记符N或快捷键(F3) 查找框有内容就直接查找贯标位置以后的内容,查找框没有内容直接弹出查找框 2.8替换(R) 菜单内点击或助记符R或快捷键(ctrl + H) 弹出替换对话框,有全部替换和替换当前两种 当前替换:替换光标选中的内容,光标移动到下一个查找内容上 2.9转到(G) 菜单内点击或助记符G或快捷键(ctrl + G) 在自动换行未选中的情况下,点击之后弹出转到指定行对话框 2.10全选(A) 菜单内点击或助记符A或快捷键(ctrl + A) 响应后选中全部文本内容 2.11时间/日期(D) 菜单内点击或助记符D或快捷键(F5) 在光标选中的内容里修改为当前时间 3.格式(O) 可以通过点击菜单或快捷键(alt + O)打开菜单页 3.1自动换行(W) 菜单内点击或助记符W 选中后,文本会自动换行,且不能点击查看状态栏和转到菜单 3.2字体(F) 菜单内点击或助记符F 弹出字体对话框:可以选择字体(F)、字形(Y)大小(S) 拥有示例和选择脚本,确定后更改全部字体 4.查看(V) 可以通过点击菜单或快捷键(alt + V)打开菜单页 4.1状态栏(S) 菜单内点击或助记符S 在底部会显示光标的起始坐标,第几行第几列 5.帮助(H) 可以通过点击菜单或快捷键(alt + H)打开菜单页 5.1查看帮助(H) 菜单内点击或助记符H 点击弹出帮助文本 5.2关于记事本(A)、 菜单内点击或助记符A 点击弹出关于记事本的对话框 显示它的版本信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值