import java.awt.*;
import java.awt.event.*;
import java.io.*; public class NoteDemo { private Frame fr;
private TextArea ta;
private MenuBar bar;
private Menu m;
private MenuItem mi1,mi2,mi3,mi4,mi5;
private Font font;
private Dialog dia;
private Button but1,but2; private FileDialog fd1,fd2; private File file = null; NoteDemo()
{
init();
} public void init()
{
fr = new Frame("MyNote by__sho");
ta = new TextArea();
bar = new MenuBar();
m = new Menu("File");
mi1 = new MenuItem("New");
mi2 = new MenuItem("Open");
mi3 = new MenuItem("Save");
mi4 = new MenuItem("Save As");
mi5 = new MenuItem("Exit"); but1 = new Button("是");
but2 = new Button("否"); fd1 = new FileDialog(fr,"File",FileDialog.LOAD );
fd2 = new FileDialog(fr,"File",FileDialog.SAVE ); font = new Font("Monospaced" ,Font.BOLD,20);//新建一个字体对象 dia = new Dialog(fr,"是否保存?",true); dia.setLayout(new FlowLayout());
dia.setBounds(530, 280, 140, 100); fr.setBounds(200, 80, 700, 600);
fr.add(ta);
fr.setFont(font);//设置字体 m.add(mi1);
m.add(mi2);
m.add(mi3);
m.add(mi4);
m.add(mi5);
bar.add(m); fr.setMenuBar(bar); dia.add(but1);
dia.add(but2); myEvent(); fr.setVisible(true); } public void myEvent()
{
fr.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
//New
mi1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ta.setText("");
}
});
//Open
mi2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fd1.setVisible(true);
String dirPath = fd1.getDirectory();//返回次对话框的目录
String fileName = fd1.getFile();//获取此文件对话框的选定文件
if(dirPath==null&&fileName==null)
return ;//下面的程序不运行
ta.setText("");
file = new File(dirPath,fileName);
try
{
BufferedReader bufr = new BufferedReader(new FileReader(file));
String str = null;
while((str = bufr.readLine())!=null)
{
ta.append(str +"\r\n");
}
bufr.close();//资源必须关闭
}
catch(IOException ex)
{
throw new RuntimeException("流无法读取");
}
}
});
//Save
mi3.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveMethod();
}
});
mi4.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
fd2.setVisible(true);
String dirPath = fd2.getDirectory();//返回次对话框的目录
String fileName = fd2.getFile();//获取此文件对话框的选定文件
if(dirPath==null&&fileName==null)//判断是否取消
return ;//下面的程序不运行
// ta.setText(" ");
file = new File(dirPath,fileName); try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String str = ta.getText();
bufw.write(str);
bufw.close();
}
catch(IOException ed)
{
throw new RuntimeException("写入流出现异常");
}
}
});
//Exit
mi5.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String str = ta.getText();
if(str.equals(""))
System.exit(0);
else
{
dia.setVisible(true);
}
}
}); but1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
saveMethod();
}
}); but2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}); ta.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
// ctrl和S同时按下
if((e.isControlDown())&&(e.getKeyCode() == e.VK_S))
{
saveMethod();
}
}
});
} public void saveMethod()
{
if(file==null)
{
//文件为空,那么文件对话框就会跳出来
fd2.setVisible(true);
String dirPath = fd2.getDirectory();//返回次对话框的目录
String fileName = fd2.getFile();//获取此文件对话框的选定文件
if(dirPath==null&&fileName==null)//判断是否取消
return ;//下面的程序不运行
// ta.setText(" ");
file = new File(dirPath,fileName);
} try
{
BufferedWriter bufw = new BufferedWriter(new FileWriter(file));
String str = ta.getText();
bufw.write(str);
bufw.close();
}
catch(IOException ed)
{
throw new RuntimeException("写入流出现异常");
}
} public static void main(String[] args)
{
new NoteDemo();
}
}

用java写的一个简易记事本的更多相关文章

  1. 如何使用Java AWT 创建一个简易计算器

    摘要:手把手教你使用 Java AWT 创建一个简易计算器. 本文分享自华为云社区<手把手教你使用 Java AWT 创建一个简易计算器>,作者:海拥 . 关于AWT AWT (抽象窗口工 ...

  2. Java图形界面开发—简易记事本

          在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: ...

  3. 用Java语言编写一个简易画板

    讲了三篇概博客的概念,今天,我们来一点实际的东西.我们来探讨一下如何用Java语言,编写一块简易的画图板. 一.需求分析 无论我们使用什么语言,去编写一个什么样的项目,我们的第一步,总是去分析这个项目 ...

  4. 利用MVC编程模式-开发一个简易记事本app

    学了极客学院一个开发记事本的课程,利用自己对MVC编程模式的简单理解重写了一遍该app. github地址:https://github.com/morningsky/MyNote MVC即,模型(m ...

  5. 发个2012年用java写的一个控制台小游戏

    时间是把杀狗刀 突然发现了12年用java写的控制台玩的一个文字游戏,有兴趣的可以下载试试哈汪~ 里面难点当时确实遇到过,在计算倒计时的时候用了多线程,当时还写了好久才搞定.很怀念那个时间虽然不会做游 ...

  6. Java学习笔记——实现一个简易记事本Notepad的编写

    记事本功能介绍 1.   新建:记事本清空. 2.   打开:可打开笔记本上任意文本文件. 3.   保存:将文件保存至当前文件夹. 4.   另存为:将文件保存至任意位置. 5.   退出:退出时确 ...

  7. 用JAVA写查询一个字符串中是否包含另外一个字符串以及出现的次数

    package JAVA; import java.awt.List;import java.util.ArrayList;/** *  * @author 梁小鱼 * */public class ...

  8. 用java写的一个程序,可以调用windows系统中自带的各种工具,例如截图,便签等

    由于图片资源没有上传,所以运行后不会有图片,感兴趣的同学可以@我,我打包上传, package SmallPrograme; import java.awt.*; import java.awt.ev ...

  9. Java实践:一个简易的http server和client的java源码学习和总结。

    一.基本思路: 1.服务器端通过socket(), 监听在TCP 8080端口,等待客户端来连接. 2.服务器端解析客户端的HTTP请求中的URI值,把本地的目录下指定文件通过java的读取文件的方式 ...

随机推荐

  1. angular.js之作用域scope'@','=','&'

    <!doctype html> <html ng-app='myApp'> <head> </head> <body> <script ...

  2. Servlet的监听

    Servlet监听 在<Servlet和Jsp>中我们使用了ServletConfig获取Servlet的初始配置,用ServletContext来获取整个Web应用的初始配置,但如果需要 ...

  3. wemall app商城源码Android数据的SharedPreferences储存方式

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android数据 ...

  4. 大富豪APK安卓客户端的反编译修改和重新打包

    大富豪APK安卓客户端的反编译修改和重新打包 修改安装我们需要几个工具 DFH_3.4.X  (用于修改客户端) dnsPy        (用于修改.dll文件) 大富豪加解密.exe  ( 用于加 ...

  5. std::copy性能分析与memmove机器级实现

    复制数据的快速方法std::copy C++复制数据各种方法大家都会,很多时候我们都会用到std::copy这个STL函数,这个效率确实很不错,比我们一个一个元素复制或者用迭代器复制都来的要快很多. ...

  6. 用Visual Studio Code Debug世界上最好的语言

    前言 这阵子因缘巧合接手了一个辣鸡项目,是用世界上最好的拍黄片写的,项目基本是另一个小伙伴在撸码,我就兼职打杂和发布做点运维的工作. 然后昨天项目上了测试版之后,一用起来Error满天飞了.让小伙伴查 ...

  7. 免费搭建wordpress博客有感

    之前一直有搭建个wordpress博客的想法,但一直没有实施.最近离职之后,空闲时间多了起来,就开始折腾wordpress博客起来. wordpress博客可玩性很高,但刚开始只想练练手,就没有想买域 ...

  8. Webpack单元测试,e2e测试

    此篇文章是续 webpack多入口文件.热更新等体验,主要说明单元测试与e2e测试的基本配置以及相关应用. 一.单元测试 实现单元测试框架的搭建.es6语法的应用.以及测试覆盖率的引入. 1. 需要安 ...

  9. GCC命令

    一. 常用编译命令选项 源程序test.c 1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. ...

  10. Struts2之OGNL表达式

    OGNL(Object-Graph Navigation Language的简称),对象图导航语言,它是一门表达式语言,除了用来设置和获取Java对象的属性之外,另外提供诸如集合的投影和过滤以及lam ...