/*
* 自己写的一个小记事本,
* 为了方便编译,把一些用到的东西都写成了内部类了,
* 不过感觉还有很多方面欠缺,谢谢指正!
*
*
*
* **/
import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
public class EditFrame extends Frame{
// 添加TextArea
TextArea ta=new TextArea();
File currentfile=null;
public void creatFrame(){
//设置菜单栏
MenuBar mb=new MenuBar();
Menu menufile =new Menu("File");
Menu menuedit =new Menu("Edit");
Menu menuhelp=new Menu("Help");
MenuItem fileitemnew=new MenuItem("New");
MenuItem fileitemopen=new MenuItem("Open");
MenuItem fileitemsave=new MenuItem("Save");
MenuItem fileitemsaveas=new MenuItem("Save As");
MenuItem fileitemexit=new MenuItem("Exit");
fileitemopen.addActionListener(new OpenAction(this));
fileitemexit.addActionListener(new ExitAction());
fileitemsave.addActionListener(new SaveAction());
fileitemnew.addActionListener(new NewAction(this));
fileitemsaveas.addActionListener(new SaveAsAction(this));
menufile.add(fileitemnew);
menufile.add(fileitemopen);
menufile.add(fileitemsave);
menufile.add(fileitemsaveas);
menufile.add(fileitemexit);
MenuItem edititemcopy=new MenuItem("Copy");
MenuItem edititemcut=new MenuItem("Cut");
MenuItem edititempaste=new MenuItem("Paste");
edititempaste.addActionListener(new PasteAction());
edititemcut.addActionListener(new CutAction());
edititemcopy.addActionListener(new CopyAction());
menuedit.add(edititemcopy);
menuedit.add(edititemcut);
menuedit.add(edititempaste);
MenuItem helpitemhelp=new MenuItem("Help");
MenuItem helpitemabout=new MenuItem("About");
helpitemhelp.addActionListener(new HelpAction());
helpitemabout.addActionListener(new HelpAction());
menuhelp.add(helpitemhelp);
menuhelp.add(helpitemabout);
mb.add(menufile);
mb.add(menuedit);
mb.add(menuhelp);
//设置Frame
this.setTitle("MenuTest");
this.setSize(600,500);
this.setLocation(200, 200);
this.setResizable(false);
this.setMenuBar(mb);
this.add(ta);
this.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
this.setVisible(true);
}
public static void main(String[] args){
EditFrame f=new EditFrame();
f.creatFrame();
}
class OpenAction implements ActionListener {
Frame f;
public OpenAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent e) {
// JFileChooser jfc=new JFileChooser();
// jfc.setVisible(true);
// System.out.println("asdg");
/*
* FileDialog(Frame parent)
创建一个文件对话框,用于加载文件。
FileDialog(Frame parent, String title)
创建一个具有指定标题的文件对话框窗口,用于加载文件。
FileDialog(Frame parent, String title, int mode)
创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。
*
mode:
static int LOAD 0
此常量值指示文件对话框窗口的作用是查找要读取的文件。
static int SAVE 1
此常量值指示文件对话框窗口的作用是查找要写入的文件。
* */
FileDialog fd=new FileDialog(f,"Open",0);//0 打开对话框
//FileDialog fd=new FileDialog(f,"Open",1);// 1 保存对话框
fd.setVisible(true);
if(fd.getFile()==null)return ;
File choosefile=new File(fd.getDirectory(),fd.getFile());
currentfile=choosefile;
try {
FileInputStream fis=new FileInputStream(choosefile);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
String linestring;
/*怎么样换行???*/
while((linestring=br.readLine())!=null){//全部读取
ta.append(linestring+"\n");
//System.out.println(linestring);
}
//br.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
class ExitAction implements ActionListener{
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
class NewAction implements ActionListener{
Frame f;
public NewAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent arg0) {
FileDialog fd=new FileDialog(f,"New",FileDialog.SAVE);
fd.setVisible(true);
if(fd.getFile()==null)return;
currentfile=new File(fd.getDirectory(),fd.getFile());
//System.out.println("asdg");
}
}
class SaveAction implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
if(currentfile!=null){
FileOutputStream fos;
try {
fos = new FileOutputStream(currentfile);
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bw=new BufferedWriter(osw);
try {
bw.write(ta.getText());
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("asdg");
}else return;
}
}
class SaveAsAction implements ActionListener{
Frame f;
public SaveAsAction(Frame f){
this.f=f;
}
public void actionPerformed(ActionEvent arg0) {
FileDialog fd=new FileDialog(f,"Save As",FileDialog.SAVE);
fd.setVisible(true);
currentfile=new File(fd.getDirectory(),fd.getFile());
SaveAction save=new SaveAction();
save.actionPerformed(arg0);
}
}
// static class SetMenuState{
//
// MenuBar mb;
// public SetMenuState(MenuBar mb){
// this.mb=mb;
//
// }
//
// public void SetMenu(){
//
// int i;
// int j;
// for(i=0;i<mb.getMenuCount();i++){
// for(j=0;j<mb.getMenu(i).getItemCount();j++){
// mb.getMenu(i).getItem(j).getLabel();break;
// }
// }
//
// }
//
//
//
//
// }
class PasteAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
Clipboard clipbd=getToolkit().getSystemClipboard();//得到系统剪切板内容
Transferable clipData =clipbd.getContents(EditFrame.this);//??????
try {
String clipString =
(String)clipData.
getTransferData(
DataFlavor.stringFlavor);
ta.replaceRange(clipString,
ta.getSelectionStart(),
ta.getSelectionEnd());
} catch(Exception ex) {
System.out.println("not String flavor");
}
}
}
class CutAction implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
StringSelection clipstring=new StringSelection(ta.getSelectedText());
Clipboard clipbd=getToolkit().getSystemClipboard();
clipbd.setContents(clipstring,clipstring);
ta.replaceRange("", ta.getSelectionStart(), ta.getSelectionEnd());
}
}
class CopyAction implements ActionListener{
public void actionPerformed(ActionEvent arg0){
Clipboard cb=getToolkit().getSystemClipboard();
StringSelection clipstring =new StringSelection(ta.getSelectedText());
cb.setContents(clipstring, clipstring);
}
}
class HelpAction implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
final Dialog help=new Dialog(EditFrame.this,"Help");
Label lab1=new Label("个人BLOG:http://hi.baidu.com/gosanye/blog");
help.setLayout(new BorderLayout());
help.add(lab1,BorderLayout.CENTER);
help.setSize(300,80);
help.setResizable(false);
help.setLocation(400,400);
help.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
help.setVisible(false);
}
});
help.setVisible(true);
}
}
}
分享到:
相关推荐
综上所述,这个"java 写的一个记事本程序"涵盖了Java GUI编程、文件I/O操作、事件处理和用户交互等多个核心知识点,是学习Java基础和实践的好项目。通过这个项目,开发者可以深入理解Java图形界面和文件操作的原理,...
【标签】中的“java_记事本”、“java小记事本”、“用java做一个记”、“记事本_java”和“记事本程序”进一步强调了这个项目是关于使用Java来实现一个记事本程序。其中,“小记事本”可能暗示这是一个轻量级的应用...
标题中的“日历记事本Java写的”表明这是一个使用Java编程语言开发的日历应用程序,它具有记事本功能,能够帮助用户记录日常生活中的事件和提醒。这个应用可能结合了日历视图和文本编辑功能,使得用户可以在查看日期...
用Java编写的简易记事本,类似于我们平常用的记事本。
java的记事本,功能很强大,有复制粘贴,查找替换,更改字体,字号等一系列功能,
【标签】"java写的一个小型记事本"提示我们,这个项目的核心是利用Java的文件操作功能来读取、写入和保存文本数据。Java中的File类和FileInputStream/FileOutputStream类是进行此类操作的基础。此外,可能还使用了...
一个记事本的源程序_ 用java写的 一个记事本的源程序_ 用java写的
这就是一个基本的Java记事本程序的实现框架。当然,实际的程序可能还需要包括更多功能,如剪切、复制、粘贴、查找、替换等,这些都需要通过额外的事件处理和 Swing 的相关组件来实现。同时,为了提高用户体验,我们...
【Java制作的一个记事本程序】是一个利用Java编程语言实现的文本编辑软件,它模仿了Windows操作系统中的记事本功能,提供了基本的文本编辑、保存和读取等操作。这个程序展示了Java在桌面应用开发方面的潜力,特别是...
本项目"用JAVA写的记事本小程序"是一个适合初学者入门的实践案例,它通过JAVA语言实现了基本的文本编辑功能,如打开、保存、编辑文本等,帮助初学者理解和掌握JAVA的基础语法以及IO流、Swing库等核心概念。...
Java记事本小程序是编程领域中的一个基础项目,它通常用于教授初学者如何利用Java语言进行GUI(图形用户界面)编程。在这个项目中,开发者Koma不仅创建了一个基本的记事本应用程序,还包含了色盲检测程序的源码,这...
java记事本java记事本java记事本java记事本java记事本java记事本java记事本
【标题】"java记事本 源代码"所涉及的知识点主要集中在Java编程语言、图形用户界面(GUI)设计以及文件操作上。这个项目利用Java的Swing库来构建一个类似于Windows记事本的应用程序,它实现了文本编辑的基础功能。 ...
这个Java记事本程序可能包括了基本的文本编辑功能,如新建、打开、保存文件,以及文字的复制、粘贴、剪切、撤销、重做等操作。然而,由于描述中提到的“功能不是很全”,它可能缺乏一些进阶特性,比如查找和替换功能...
一个简单的JAVA记事本,拥有记事本基本功能,并有显示当前时间,更改背景颜色和字体颜色功能
用java写的记事本,1000行代码,基本上所有的功能都全了(和微软系统自带的记事本的相似度>70%) 其中菜单里新建模块的代码如下: // 菜单 // 新建(N)按钮事件监听 newTextItem.addActionListener(new ...
JAVA手机记事本,是很好用的JAVA手机记事本,VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV。经验证,金立手机L18可用。JAVA手机记事本,是很好用的JAVA手机记事本,...
【标题】"Java记事本 简单的Java记事本" 提示我们这是一个使用Java编程语言开发的简易文本编辑器。Java是一种广泛使用的面向对象的编程语言,以其跨平台性和“一次编写,到处运行”的特性而闻名。在本项目中,开发者...
这个Java记事本项目对于初学者来说是一个很好的实践平台,通过它,可以深入理解Java编程、GUI设计以及文件操作等核心概念。同时,它也为进阶学习者提供了一个基础的起点,可以在此基础上添加更复杂的功能,如文本...
总之,这个Java Swing记事本项目展示了如何利用Java GUI库创建一个功能丰富的文本编辑器,同时也提供了学习和理解Swing组件、事件处理和文件操作的实践案例。通过深入研究源代码,你可以更好地掌握Java GUI编程,并...