本文实例为大家分享了Java开发简易记事本的具体代码,供大家参考,具体内容如下

public class NotePad extends JFrame implements ActionListener{

//定义需要的组件

JTextArea jta=null; //多行文本框

JMenuBar jmb=null; //菜单条

JMenu jm1=null; //菜单

JMenuItem jmi1=null,jmi2=null; //菜单项

public static void main(String[] args) {

NotePad np=new NotePad();

}

public NotePad(){ //构造函数

jta=new JTextArea(); //创建jta

jmb=new JMenuBar();

jm1=new JMenu("文件");

jm1.setMnemonic('F'); //设置助记符

jmi1=new JMenuItem("打开",new ImageIcon("imag_3.jpg"));

jmi1.addActionListener(this); //注册监听

jmi1.setActionCommand("open");

jmi2=new JMenuItem("保存");

jmi2.addActionListener(this);

jmi2.setActionCommand("save");

this.setJMenuBar(jmb); //加入

jmb.add(jm1); //把菜单放入菜单条

jm1.add(jmi1); //把item放入到Menu中

jm1.add(jmi2);

this.add(jta); //放入到JFrame

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setSize(400,300);

this.setTitle("记事本");

this.setIconImage((new ImageIcon("imag_2.jpg")).getImage());

this.setVisible(true);

}

@Override

public void actionPerformed(ActionEvent arg0) {

//判断是哪个菜单被选中

if(arg0.getActionCommand().equals("open")){

//JFileChooser,创建一个文件选择组件

JFileChooser jfc1=new JFileChooser();

jfc1.setDialogTitle("请选择文件……"); //设置名字

jfc1.showOpenDialog(null); //默认方式

jfc1.setVisible(true); //显示

//得到用户选择的文件全路径

String filename=jfc1.getSelectedFile().getAbsolutePath();

FileReader fr=null;

BufferedReader br=null;

try {

fr=new FileReader(filename);

br=new BufferedReader(fr);

//从文件中读取信息并显示到jta

String s="";

String allCon="";

while((s=br.readLine())!=null){ //循环读取文件,s不为空即还未读完毕

allCon+=s+"\r\n";

}

jta.setText(allCon); //放置到jta

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

fr.close();

br.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}else if(arg0.getActionCommand().equals("save")){

//出现保存对话框

JFileChooser jfc2=new JFileChooser();

jfc2.setDialogTitle("另存为……");

jfc2.showSaveDialog(null); //按默认的方式显示

jfc2.setVisible(true);

//得到用户希望把文件保存到何处,文件全路径

String filename2=jfc2.getSelectedFile().getAbsolutePath();

//准备写入到指定文件

FileWriter fw=null;

BufferedWriter bw=null;

try {

fw=new FileWriter(filename2);

bw=new BufferedWriter(fw);

bw.write(this.jta.getText());

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

bw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

运行效果如下

点击文件按钮,点击打开菜单项,选择一个文本文件,效果如下:

打开后,内容显示如下:

对内容稍作修改,另存为名为sss的文件,效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java记事本编程工作原理_Java文件(io)编程之记事本开发详解相关推荐

  1. java虚拟机堆栈工作原理_java虚拟机工作原理?

    展开全部 从宏观上介绍一下Java虚拟机的e5a48de588b662616964757a686964616f31333363373731工作原理.从最初编写的Java源文件(.java文件)是如何一 ...

  2. Java中的锁原理、锁优化、CAS、AQS详解

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:景小财 www.jianshu.com/p/e674ee68 ...

  3. Java中的锁原理、锁优化、CAS、AQS详解!

    阅读本文大概需要 2.8 分钟. 来源:jianshu.com/p/e674ee68fd3f 一.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 二.锁实现的基本原理 2.1.v ...

  4. java文本区背景颜色_Java如何设置PDF文档背景色详解|chu

    前言 一般生成的PDF文档默认的文档底色为白色,我们可以通过一定方法来更改文档的背景色,以达到文档美化以及保护双眼的作用. 以下内容提供了Java编程来设置PDF背景色的方法.包括:设置纯色背景 设置 ...

  5. java与与短路与_Java中短路运算符与逻辑运算符示例详解

    1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...

  6. JAVA中的适配器应用_Java适配器模式应用之电源适配器功能详解

    本文实例讲述了Java适配器模式应用之电源适配器功能.分享给大家供大家参考,具体如下: 一.模式定义 存在两种适配器模式 1 对象适配器模式,在这种适配器模式中,适配器容纳一个它包裹的类对象的物理实体 ...

  7. java volatile关键字的作用_java volatile关键字作用及使用场景详解

    1. volatile关键字的作用:保证了变量的可见性(visibility).被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象.如以下代码片段,isShut ...

  8. java中po代码示例_java操作oracle常用的示例代码详解

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  9. java jdbc连接 代码块_java 中JDBC连接数据库代码和步骤详解及实例代码

    •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的 ...

最新文章

  1. 用IE重起计算机或者关机
  2. 【Python】Scrapy爬虫实战(豆瓣电影 Top 250)
  3. TabControl控件和TabPage
  4. 把window中换行符(^M)改为linux的换行符(\r)
  5. Ember入门指南——教程目录
  6. 基于 axios 的 Vue 项目 http 请求优化
  7. angularjs 同步請求_angularjs $q、$http 处理多个异步请求
  8. python出现的各种问题
  9. 支付宝上线长辈模式: 字体图标加大 去除了营销推送
  10. 以V神为灵感创作的加密艺术NFT“EthBoy”以260ETH高价售出
  11. What Are The Differences Between Base, Medium, and Full Camera Link Configurations?
  12. php session的一些理解
  13. 分布式配置管理平台VS统一集中配置管理
  14. android app icon素材,史上最全的APP图标模板素材以及设计格式最全的
  15. 计算机时代汉字书写有了新的方式,网络时代的汉字书写
  16. 《代码大全》读书笔记(转载)
  17. iPhone开发部分总结
  18. Python处理Excel表中单元格带有换行的数据
  19. vs2019 fatal error C1090: PDB API “3“
  20. 五年级上册计算机教案闽教版,闽教版五年级上册信息技术教案

热门文章

  1. 像360悬浮窗那样,用WindowManager做一个炫酷的悬浮迷你音乐盒(上)
  2. 站长应该如何挖掘长尾关键词
  3. WordPress彻底禁用上传媒体图片自动生成缩略图及多尺寸图片(亲测可用)
  4. html监听多选框事件,复选框事件监听使用求助
  5. visio的.vsd格式文件转换.eps格式文件的方法+Gsview裁剪EPS文件
  6. 推荐几个常用在线图工具(支持时序图、用例图、类图、活动图、组件图、状态图、对象图、部署图等。同时还支持非 UML 图的甘特图、架构图等)
  7. 一个小巧的WINDOWS垃圾清理工具
  8. 文件新旧判断和字符串判断
  9. 【微博技巧】绕开微博绑定手机注册微博
  10. Spring Cloud Alibaba微服务架构实战教程—07集成knife4j生成Api文档