java记事本保存的监听事件_java中如何实现记事本的打开与保存?实例展示

在我们的日常生活当中,java的使用可以说是无处不在的。它几乎涉及到了生活的方方面面,极其便利。今天就来为大家介绍,java中如何实现记事本的打开与保存?并且通过实际的代码为大家展示。一起来了解一下吧。

一、首先是主方法,代码如下所示: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编程时而不显示菜单选项,改变语句顺课序解决,需要将可见性设置在逻辑最后。

总结如下:

Swing中有时方法不显示,需要把方setVisible(true)放到最后执行。

1.AWT中的TextArea默认是中间布局;

2.fileDialog对话框Load模式需要对取消事件进行处理;

3. 快捷键使用需要用到JmenuItem。

以上就是关于java中如何实现记事本的打开与保存的主要内容了。总体而言操作还是十分简洁明了易于上手的。如果你对java知识感兴趣,想要了解更多java实例以及常见问题,敬请关注奇Q工具网。

推荐阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值