Java简易实现记事本的打开与保存
记事本的打开与保存
一些总结
* 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简易实现记事本的打开与保存的更多相关文章
- 12.JAVA之GUI编程打开与保存文件
功能:java图形用户界面开发,练习打开保存文件 代码如下: import java.awt.FileDialog; import java.awt.Frame; import java.awt.Me ...
- [转载]Java开发在线打开编辑保存Word文件
Java调用logo是“P”图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 工具/原料 Eclipse或MyEclipse等j ...
- [原创]Java开发在线打开编辑保存Word文件(支持多浏览器)
Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 1. 下载PageOffice开发包:http://www.zhuo ...
- java简易编辑器
package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
- 编写运行最简单的java程序——使用记事本编写java程序
第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...
- ajax返回json在 IE下,提示打开或保存的解决方法
Content-type要设置成 text/html 我是用的mvc jquery.form.js 提交的表单. 返回json响应数据. 结果在ie下提示打开或保存,查看保存的内容.就是我返回的jso ...
- java io流 运行错误时,保存异常到文件里面
java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...
- 1、Qt Project之基本文件打开与保存
基本文件打开与保存: 首先是涉及到的头文件,我们需要在mainwindow.h包含头文件: #include <QFileDialog> #include <QFile> #i ...
- xpython在Windos下的安装及简单的文本打开、保存
前几天写自动化部署脚本,用的是paramiko和shell相结合,paramiko可是实现ssh登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...
随机推荐
- java课堂作业3 动手动脑
第一题 测试一下代码查看输出结果 public class InitializeBlockDemo { /** * @param args */ public static void main(Str ...
- redis分布式锁原理与实现
分布式锁原理 分布式锁,是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调他们的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候, ...
- 关于web网页截图的问题(html2canvas插件)
import html2canvas from 'html2canvas' import jpg from '@/assets/1.jpg'; htmlToImage=(element, ca ...
- 解决SonarQube启动时直接挂掉问题
症状:启动SonarQube时,系统启动,但是马上关闭 查看日志,提示ElasticSearch启动有问题ClusterBlockException[blocked by: [FORBIDDEN/12 ...
- springboot maven打包插件
<build> <plugins> <!-- springboot maven打包--> <plugin> <groupId>org.spr ...
- shell练习--关于关联数组自增统计判断的学习
今天在书上看到了一个关联数组 let statarray["$ftype"]++ 这样一个操作,用来做索引的自增统计,所以记下来 #!/bin/bash #统计文件类型 #关于关 ...
- 泛型(二)封装工具类CommonUtils-把一个Map转换成指定类型的javabean对象
1.commons-beanutils的使用 commons-beanutils-1.9.3.jar 依赖 commons-logging-1.2.jar 代码1: String className ...
- Spotlight_on_mysql 安装和监控
一.下载 1.下载并安装 mysql-connector-3.51.30 2.下载并安装 Quest_Spotlight-on-MySQL_80.exe 二.填写注册码 Authorization K ...
- [BZOJ1059]:[ZJOI2007]矩阵游戏(二分图匹配)
题目传送门 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N×N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种 ...
- python 正则之字母匹配
\A:匹配字符串的开始 \b:匹配一个单词边界 取出a边界单词的个数 >>> len(re.findall(r"\ba"," ab abc ad ...