一、概要

1.功能介绍

2.实现的思路及步骤代码

3.完整代码

二、功能

运用IO流和Swing实现简单的记事本功能(打开、保存、退出)

三、思路及实现步骤

1.在构造函数中画出操作界面

 //创建jta
jta = new JTextArea();
jmb = new JMenuBar();
jml = new JMenu("菜单(M)");
//设置助记符
jml.setMnemonic('M'); //打开按钮
jmi1 = new JMenuItem("打开", new ImageIcon("edit.gif"));
//添加图标的第二种方法
//ImageIcon ic = new ImageIcon("edit.gif");
//jmi1.setIcon(ic);
//保存按钮
jmi2 = new JMenuItem("保存");
//退出按钮
jmi3 = new JMenuItem("退出"); //放入控件
this.setJMenuBar(jmb);
//把JMenu放入到JMenuBar
jmb.add(jml);
//把item放入到Menu中去
jml.add(jmi1);
jml.add(jmi2);
jml.add(jmi3); //放入到JFrame里
this.add(jta);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);

界面展示:

2.注册监听事件(判断点了哪个按钮)

 //进行注册监听
//打开
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
//保存
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
//退出
jmi3.addActionListener(this);
jmi3.setActionCommand("quit");

3.根据事件反馈判断要进行的操作(根据点击的按钮来判断要做什么事)

①打开

 if (e.getActionCommand().equals("open")) {
//JFileChooser文件选择组件
JFileChooser jfc1 = new JFileChooser();
//设置名字
jfc1.setDialogTitle("请选择文件..."); jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true); String file = null;
try {
//得到用户选择的文件绝对(全)路径
file = jfc1.getSelectedFile().getAbsolutePath(); //System.out.println(filename);
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(file);
br = new BufferedReader(fr);
//从文件中读取信息并显示到jta
String s = "";
String allCon = "";
while ((s = br.readLine()) != null) {
allCon += s + "\r\n";
} //放置到jta即可
jta.setText(allCon); } catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (br != null && fr != null) {
br.close();
fr.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch (Exception ex) {
System.out.println("未选中文件");
//ex.printStackTrace();
}
}

②保存

 if (e.getActionCommand().equals("save")) {
//出现保存对话框
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("另存为...");
//按默认的方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true); String file = null;
try {
//得到用户希望把文件保存到的地址(文件绝对路径)
file = jfc.getSelectedFile().getAbsolutePath(); //写入到指定文件
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(file);
bw = new BufferedWriter(fw); bw.write(this.jta.getText());
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
//bw和fw的关闭顺序不能写反,否则会报错
if (bw != null && fw != null) {
bw.close();
fw.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch (Exception ex) {
System.out.println("未选中文件");
//ex.printStackTrace();
//System.out.println(ex.getMessage());
}
}

③退出

 if (e.getActionCommand().equals("quit")) {
System.exit(0);
}

四、附上完整代码

 /**
* 我的记事本(界面+功能)
*/
package com.test3; import javax.swing.*;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter; public class NotePad extends JFrame implements ActionListener {
//定义需要的组件
JTextArea jta = null; //菜单条
JMenuBar jmb = null; //定义JMenu(菜单栏按钮)
JMenu jml = null; //定义JMenuItem(功能按钮)
JMenuItem jmi1 = null;
JMenuItem jmi2 = null;
JMenuItem jmi3 = null; public static void main(String[] args) {
NotePad notePad = new NotePad();
} //构造函数
public NotePad() {
//创建jta
jta = new JTextArea();
jmb = new JMenuBar();
jml = new JMenu("菜单(M)");
//设置助记符
jml.setMnemonic('M'); //打开按钮
jmi1 = new JMenuItem("打开", new ImageIcon("edit.gif"));
//添加图标的第二种方法
//ImageIcon ic = new ImageIcon("edit.gif");
//jmi1.setIcon(ic);
//保存按钮
jmi2 = new JMenuItem("保存");
//退出按钮
jmi3 = new JMenuItem("退出"); Listen(); //放入控件
this.setJMenuBar(jmb);
//把JMenu放入到JMenuBar
jmb.add(jml);
//把item放入到Menu中去
jml.add(jmi1);
jml.add(jmi2);
jml.add(jmi3); //放入到JFrame里
this.add(jta);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
} //监听事件
public void Listen()
{
//进行注册监听
//打开
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
//保存
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
//退出
jmi3.addActionListener(this);
jmi3.setActionCommand("quit");
} @Override
public void actionPerformed(ActionEvent e) {
//判断触发了哪个功能按钮
//打开
if (e.getActionCommand().equals("open")) {
//JFileChooser文件选择组件
JFileChooser jfc1 = new JFileChooser();
//设置名字
jfc1.setDialogTitle("请选择文件..."); jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true); String file = null;
try {
//得到用户选择的文件绝对(全)路径
file = jfc1.getSelectedFile().getAbsolutePath(); //System.out.println(filename);
FileReader fr = null;
BufferedReader br = null;
try {
fr = new FileReader(file);
br = new BufferedReader(fr);
//从文件中读取信息并显示到jta
String s = "";
String allCon = "";
while ((s = br.readLine()) != null) {
allCon += s + "\r\n";
} //放置到jta即可
jta.setText(allCon); } catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
if (br != null && fr != null) {
br.close();
fr.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch (Exception ex) {
System.out.println("未选中文件");
//ex.printStackTrace();
}
}
//保存
else if (e.getActionCommand().equals("save")) {
//出现保存对话框
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("另存为...");
//按默认的方式显示
jfc.showSaveDialog(null);
jfc.setVisible(true); String file = null;
try {
//得到用户希望把文件保存到的地址(文件绝对路径)
file = jfc.getSelectedFile().getAbsolutePath(); //写入到指定文件
FileWriter fw = null;
BufferedWriter bw = null;
try {
fw = new FileWriter(file);
bw = new BufferedWriter(fw); bw.write(this.jta.getText());
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
//bw和fw的关闭顺序不能写反,否则会报错
if (bw != null && fw != null) {
bw.close();
fw.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch (Exception ex) {
System.out.println("未选中文件");
//ex.printStackTrace();
//System.out.println(ex.getMessage());
}
}
//退出
else if (e.getActionCommand().equals("quit")) {
System.exit(0);
}
}
}

JAVA 运用流编程实现简单的"记事本"功能的更多相关文章

  1. Java UDP网络编程 - 最简单示例

    UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...

  2. Java利用TCP编程实现简单聊天室

    前言: 本文是我在学习尚学堂JAVA300集第二季网络编程部分仿照视频内容实现而成 具体可以去尚学堂官网观看视频学习 一.实现思路 实现聊天室的最核心部分就是JAVA的TCP网络编程. TCP 传输控 ...

  3. JAVA IO流编程 实现文件的写入、写出以及拷贝

    一.流的概念 流:数据在数据源(文件)和程序(内存)之间经历的路径. 输入流:数据从数据源(文件)到程序(内存)的路径. 输出流:数据从程序(内存)到数据源(文件)的路径. 以内存为参照,如果数据向内 ...

  4. Java中使用UDP实现简单的聊天功能

    通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...

  5. 【Android】12.6 利用Intent实现记事本功能(NotePad)

    分类:C#.Android.VS2015: 创建日期:2016-02-23 一.简介 这个例子演示如何实现一个简单的记事本功能. 该例子提前使用了后面章节将要介绍的SQLLite数据库. 二.示例-c ...

  6. Java标准I/O流编程一览笔录

    I/O是什么 I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 流 流是一个连续的数据流,可以从流中读取数据,也可以往流中写数据.流与数据源,或 ...

  7. java socket编程开发简单例子 与 nio非阻塞通道

    基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...

  8. Java IO流简单使用

    Java IO流简单使用 也许是以前IO方面接触的比较少,我对于读和写的概念老是混淆. 趁着现在实习比较闲小结一下,我个人理解读和写都是针对程序,分别就是程序的输入和输出,或者叫读入写出. Java ...

  9. Java 标准 IO 流编程一览笔录( 上 )

    Java标准I/O知识体系图: 1.I/O是什么? I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 2.流 流是一个连续的数据流,可以从流中读 ...

随机推荐

  1. Java面试必会知识点

    1.== 和 equals()比较: (1)== 是运算符,equals()是Object中定义的方法: (2)== 比较的是 数值 是否相同,基本类型比较数值,引用类型比较对象地址的数值:且变量类型 ...

  2. 配置webpack中externals来减少打包后vendor.js的体积

    在日常的项目开发中,我们会用到各种第三方库来提高效率,但随之带来的问题就是打包后的vendor.js体积过大,导致加载时空白页时间过长,给用户的体验太差.为此我们需要减少vendor.js的体积,从本 ...

  3. js中的width问题

    1.在jQuery中,width()方法用于获得元素宽度: innerWidth()方法用于获得包括内边界(padding)的元素宽度, outerWidth()方法用于获得包括内边界(padding ...

  4. ADB运行框架原理解析【转】

    本文转载自:http://blog.csdn.net/wlwl0071986/article/details/50935496 一.adb守护进程的初始化 源码路径:~/system/core/adb ...

  5. jconsole工具检测堆内存变化的使用

    jconsole将Java写的程序检测. 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使 ...

  6. 识别String类型变量的问题

    碰到了android无法识别string的问题 Cursor cursor = db.query(true, "user", new String[]{"id" ...

  7. ng 表单提交验证

    http://www.runoob.com/try/try.php?filename=try_ng_validate

  8. rtmplib rtmp协议过程分析

    转自:http://chenzhenianqing.cn/articles/1009.html 写的很好,收藏如下,向作者致敬! 没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发 ...

  9. javaScript 基本知识点总结

    1 javaScript 简介 JavaScript最初起源于LiveScript语言,当互联网开始流行时,越来越多的网站开始使用HTML表单与用户交互,然而表单交互却成了制约网络发展的重大瓶颈(用户 ...

  10. centos7命令行模式安装&&配置_br0+kvm+虚拟机+添加硬盘+快照及恢复

    KVM创建虚拟机步骤 Submitted by zhaoley on October 18, 2016 - 10:43am 测试环境: 1: 43.243.130.89, CentOS Linux r ...