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的Swing库来构建一个类似于Windows记事本的应用程序,它实现了文本编辑的基础功能。 Java是跨平台的面向对象的编程语言,它的“一次编写,到处运行”特性使得开发的软件可以在多种操作系统上运行,...
在这个项目中,开发者Koma不仅创建了一个基本的记事本应用程序,还包含了色盲检测程序的源码,这为学习者提供了额外的实践机会。下面将详细探讨这两个知识点。 首先,我们来关注Java记事本小程序。这个程序通常会...
【标题】"日历记事本5(Java源代码)" 涉及的主要知识点是Java编程语言在创建日历记事本应用方面的实践。Java作为一种面向对象的、跨平台的编程语言,常用于开发各种桌面应用程序,包括日历和记事本功能。在这个项目...
【日历记事本4(Java源代码)】是一个基于Java编程语言开发的应用程序,它提供了日历管理和记事功能,方便用户记录日常生活中的事件和提醒。在这个项目中,开发者可能利用了Java丰富的类库来实现日历显示、事件添加...
- 通常,一个Java应用会有多个类,如主类(启动程序),视图类(定义界面布局),模型类(处理数据)和控制器类(处理用户事件)。源代码文件应按照类的功能进行组织。 10. **集成开发环境(IDE)**: - 开发Java...
总的来说,通过分析和学习"日历记事本2"的Java源代码,我们可以提升Java编程技巧,了解如何使用Java处理日期和时间,创建GUI界面,以及实现数据存储。每个源代码实例都是一次实践学习的机会,帮助我们更好地理解和...
【标题】"记事本Java源代码"涉及的是使用Java编程语言实现的一个基本文本编辑器,也就是我们常见的“记事本”程序。这个程序通常包含了基础的文本编辑功能,如新建、打开、保存、复制、粘贴、剪切、查找、替换等。在...
标题中的"notepad.rar 记事本 java小游戏源代码 jar压缩"表明这是一个包含记事本程序源码和Java小游戏源代码的RAR压缩文件。RAR是一种流行的文件压缩格式,用于将多个文件打包成一个单一的文件,便于存储、传输和...
【日历记事本3(Java源代码)】是一个基于Java编程语言开发的应用程序,用于创建、管理和查看日常记事。这个项目展示了如何利用Java的强大功能来构建一个实用的桌面应用,尤其对于学习Java GUI(图形用户界面)设计...
总的来说,这个Java源代码项目旨在通过小程序的模拟,提供一个可编辑、可保存的记事本画板应用。开发者需要熟练掌握Java GUI编程,理解图形绘制原理,并具备一定的用户体验设计能力。通过这样的实践,不仅可以提升...
【日历记事本java源代码】是一个典型的Java编程项目,用于实现一个基本的日历功能,结合记事本的功能,帮助用户记录和管理日常生活中的事件。这个项目在Java课程实验设计中常见,它能帮助学生深入理解面向对象编程、...
在本项目中,"日历记事本Java源代码"是一个使用Java编程语言开发的应用程序,主要用于管理和记录用户的日常事件。这个程序集成了日历功能和记事本特性,为用户提供了一个方便的方式来组织他们的日常生活。下面我们将...
标题“记事本java源代码”指的是这个项目提供了Java语言实现的记事本程序的源代码,非常适合初级Java开发者学习和实践。 描述中提到,这是一个为新手设计的简单记事本程序,意味着它可能包含了基本的文本编辑功能,...
【Java开发的记事本(完整版源代码)】是一个基于Java编程语言实现的简单文本编辑器项目。这个记事本程序是初学者学习Java GUI(图形用户界面)设计和事件处理的一个很好的实例。它展示了如何利用Java Swing库来创建...
总的来说,这个Java记事本程序源代码项目是一个全面的教程,涵盖了Java基础、GUI设计、文件操作和事件处理等多个重要主题。对于初学者,通过阅读和理解代码,不仅可以学习到如何创建一个实际的应用程序,还能加深对...
标题中的“目前网上最详细的java编写的记事本程序”表明这是一个使用Java编程语言实现的类似于Windows记事本的应用程序。这个程序旨在模仿并扩展Windows记事本的基本功能,可能是为了教学、练习或是个人项目的需求。...
标题中的“这是记事本应用程序的原始代码”表明我们要讨论的是一个基于Java编程语言实现的简单文本编辑器,通常称为记事本应用。这类程序允许用户创建、编辑和保存纯文本文件,是学习编程和理解基础文件操作的好例子...
【Java 记事本+源代码】是一款基于Java编程语言开发的简单文本编辑器,适合初学者进行学习和参考。这个项目旨在帮助那些初步接触Java编程的学员更好地理解和实践面向对象编程思想,以及掌握Java GUI(图形用户界面)...
标题“记事本java代码”指的是使用Java编程语言编写的记事本应用程序。Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性而著名。在这个资源中,开发者或教育者可能已经创建了一个功能类似...