在我们的日常生活当中,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工具网。
推荐阅读: