记事本的打开与保存


一些总结


* Swing中有时方法不显示,需要把方setVisible(true)放到最后执行
* AWT中的TextArea默认是中间布局
* fileDialog对话框Load模式需要对取消事件进行处理
* 快捷键使用需要用到JmenuItem

主方法


package cn.work.demo.demo03;

public class NotePad {
public static void main(String[] args) { NotepadWindow MyNotePad = new NotepadWindow(); //生成窗体
MyNotePad.frameWindow(); }
}

窗口面板


package cn.work.demo.demo03;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent; public class NotepadWindow { //静态文本区域对象,由该类调用
static TextArea textArea; //记事本窗体
public void frameWindow() {
//新建一个JFrame窗体,并为其实现Swing程序中的各个组件
JFrame frame = new JFrame("记事本");
//窗口大小
frame.setSize(1200,680);
//设置窗口在屏幕的位置,null居中
frame.setLocationRelativeTo(null);
//设置关闭响应,直接关闭
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //添加记事本的文本区域
addTextArea(frame);
//添加窗口的菜单项
addMenu(frame); //窗口可见
frame.setVisible(true);
} //记事本的文本区域
private void addTextArea(JFrame frame) {
textArea = new TextArea();
//设置字体显示格式
textArea.setFont(new Font("宋体",Font.PLAIN,23));
frame.add(textArea); } //记事本的菜单
private void addMenu(JFrame frame) { //使用Swing工具包替代AWT,方便添加快捷键
//创建菜单栏对象
JMenuBar menuBar = new JMenuBar();
//创建“文件”菜单
JMenu file = new JMenu("文 件"); // 创建 打开 菜单选项
JMenuItem open = new JMenuItem("打开文件 ");
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
java.awt.Event.CTRL_MASK)); // 创建 保存 菜单选项
JMenuItem save = new JMenuItem("保存文件 ");
save.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S,java.awt.Event.CTRL_MASK)); //把菜单栏添加到窗口上
frame.setJMenuBar(menuBar); //把file添加到菜单栏中
menuBar.add(file); //将选项添加进file中
file.add(open);
file.add(save); //给 打开 添加OpenActionListener监听器
open.addActionListener(new OpenActionListener(frame));
//给 保存 SaveActionListener监听器
save.addActionListener(new SaveActionListener(frame)); }
}

"打开"监听器


package cn.work.demo.demo03;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException; // "打开" 监听器从硬盘文件中读入内容
public class OpenActionListener implements ActionListener {
//定义一个窗体容器用来接受传入的窗体
private JFrame frame;
//构造方法接受传送进来的窗体
OpenActionListener(JFrame frame){
this.frame = frame;
} //必须要重写ActionListener的抽象方法,写入事件发生后需要执行的内容
@Override
public void actionPerformed(ActionEvent e) { //创建一个文件对话框,默认load,传入对话框窗体frame
FileDialog fileDialog = new FileDialog(frame);
//显示文件选择对话框
fileDialog.setVisible(true); //获取选择的目录路径
//获取选择的文件名
//获取文件的绝对路径
String absPath = fileDialog.getDirectory() + fileDialog.getFile(); //如果选中文件,但点击了取消,会得到null直接返回null,不影响后续操作
if(fileDialog.getFile() == null){
System.out.println(fileDialog.getFile());
return;
} BufferedReader bufre = null;
//try catcah 处理编译异常
try {
//创建字符缓冲输入流对象,构造方法由字符输入流绑定输入地址
bufre = new BufferedReader(new FileReader(absPath)); //创建字节数组,存储读入的数据
char[] chars = new char[1024]; //len为读取的有效位数
int len = 0;
//打开前清空文本区域
NotepadWindow.textArea.setText("");
//使用read读取内容
while ((len = bufre.read(chars)) != -1) {
//提取每次读的字符,生成字符串
String str = new String(chars,0,len);
//拼接每一次得到的字符串
NotepadWindow.textArea.append(str);
}
bufre.close();
}catch(IOException obj){
//获取异常信息
obj.getMessage(); } }
}

“保存”监听器


package cn.work.demo.demo03;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException; // "保存" 监听器从硬盘文件中读入内容
public class SaveActionListener implements ActionListener{ //定义一个窗体容器用来接受传入的窗体
private JFrame frame; //构造方法接受传送进来的窗体
SaveActionListener(JFrame frame){
this.frame = frame;
} @Override
public void actionPerformed(ActionEvent e) { //创建一个文件对话框,传入对话框窗体frame
FileDialog fileDialog = new FileDialog(frame);
//设置为SAVE模式
fileDialog.setTitle("保存");
fileDialog.setMode(FileDialog.SAVE); //显示文件选择对话框
fileDialog.setVisible(true); //获取保存的目录路径
String absPath = fileDialog.getDirectory() +fileDialog.getFile(); BufferedWriter bufw = null;
try {
//字符缓冲输出流,构造方法传入字符输出流绑定输出路径
bufw = new BufferedWriter(new FileWriter(absPath)); String str = NotepadWindow.textArea.getText();
//向文件写入数据
bufw.write(str);
//关闭并刷新输出流
bufw.close();
}catch (IOException obj){
obj.getMessage();
}
}
}
  • bug:swing编程时而不显示菜单选项,改变语句顺课序解决,后查阅资料需要将可见性设置在逻辑最后。

Java简易实现记事本的打开与保存的更多相关文章

  1. 12.JAVA之GUI编程打开与保存文件

    功能:java图形用户界面开发,练习打开保存文件 代码如下: import java.awt.FileDialog; import java.awt.Frame; import java.awt.Me ...

  2. [转载]Java开发在线打开编辑保存Word文件

    Java调用logo是“P”图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 工具/原料   Eclipse或MyEclipse等j ...

  3. [原创]Java开发在线打开编辑保存Word文件(支持多浏览器)

    Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 1. 下载PageOffice开发包:http://www.zhuo ...

  4. java简易编辑器

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  5. 编写运行最简单的java程序——使用记事本编写java程序

    第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...

  6. ajax返回json在 IE下,提示打开或保存的解决方法

    Content-type要设置成 text/html 我是用的mvc jquery.form.js 提交的表单. 返回json响应数据. 结果在ie下提示打开或保存,查看保存的内容.就是我返回的jso ...

  7. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

  8. 1、Qt Project之基本文件打开与保存

    基本文件打开与保存: 首先是涉及到的头文件,我们需要在mainwindow.h包含头文件: #include <QFileDialog> #include <QFile> #i ...

  9. xpython在Windos下的安装及简单的文本打开、保存

    前几天写自动化部署脚本,用的是paramiko和shell相结合,paramiko可是实现ssh登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...

随机推荐

  1. java课堂作业3 动手动脑

    第一题 测试一下代码查看输出结果 public class InitializeBlockDemo { /** * @param args */ public static void main(Str ...

  2. 【python基础】元组方法汇总

    一.定义 用于存储一组数据的有序序列, 一旦创建, 元组中的各个元素不允许修改 二.特点 1.元组有序; 2.元组是不可变的数据类型;不可修改; 3.元组中可以存储重复的数据; 4.元组中可以同时存储 ...

  3. JavaScript 中的 for 循环---------------引用

    在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 下面先来看看大家最常见的一种写法: 当数组长度在循环过程中不会改变时,我们应将 ...

  4. GO语言学习笔记3-int与byte类型转换

    1.主机字节序 主机字节序模式有两种,大端数据模式和小端数据模式.在网络编程中应注意这两者的区别,以保证数据处理的正确性.例如,网络的数据是以大端数据模式进行交互,而我们的主机大多数以小端模式处理,如 ...

  5. html applet标签 语法

    html applet标签 语法 作用:定义嵌入的 applet. 说明:某些浏览器中依然存在对 <applet> 但是需要额外的插件和安装过程才能起作用.大理石机械构件 注释:HTML5 ...

  6. smarty笔记

    smarty 笔记display():把html包含进来然后用正则匹配php变量把匹配好的页面重新保存inclue载入刚才的保存的页面 1.smarty原理2.smarty安装3.smarty模板设计 ...

  7. Android中播放声音

    在Android系统中,有两种播放声音的方式,一种是通过MediaPlayer,另外一种是通过SoundPool.前者主要用于播放长时间的音乐,而后者用于播放小段小段的音效,像按键音这种,其优点是资源 ...

  8. Python3学习笔记(六):字符串

    一.基本字符串操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用.但是字符串是不可改变的. 二.字符串格式化 字符串格式化使用字符串格式化操作符(%) ...

  9. Prometheus 后续杂记

    在后续prometheus的使用中遇到的一些问题我会在此记录 搭建初期几个问题 rule.yml中对每条告警加上主机名? 要在告警通知中加上故障机器主机名不能从prometheus的采集监控项数据中的 ...

  10. druid监控每个服务数据库连接数和SQL执行效率

    1.下载druid 2.将刚刚下载的druid放入tomcat下的lib目录 3.配置要监控的服务启动文件,添加: -Dcom.sun.management.jmxremote.port=4090 - ...