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登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...
随机推荐
- JVM垃圾回收之CMS收集器
从前文JVM垃圾回收几种常见算法和常见收集器我们知道,CMS是老年代垃圾收集器.CMS 收集器主要关注系统停顿时间.CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从 ...
- 循环结构——for语句、seq语句、while语句、break语句
1.for语句: 运行结果: 2.seq命令生成整数序列: 3.while语句: 执行结果: 4.break语句: break语句是正常结束之前退出当前循环. 执行结果: 5.continue语句: ...
- DB2常用指令
1. 启动实例(db2inst1): db2start 2. 停止实例(db2inst1): db2stop 3. 列出所有实例(db2inst1) db2ilist 3-1.列出当前实例: db2 ...
- 算法——二进制解决N皇后(超级酷炫o((>ω< ))o
先贴代码: public class Solution { void NQueen(int N, int row, int col, int pie, int na, int[] res) { if ...
- The Preliminary Contest for ICPC Asia Shanghai 2019 B. Light bulbs
题目:https://nanti.jisuanke.com/t/41399 思路:差分数组 区间内操作次数为奇数次则灯为打开状态 #include<bits/stdc++.h> using ...
- JavaScript求取水仙花数
一.什么是水仙花数 水仙花数也称为超完全数字不变数.自幂数.阿姆斯壮数.阿姆是特朗数. 水仙花数是指一个三位数,每个位数上数字的3次幂之和等于数字它本身. 水仙花数是自幂数的一种,三位的三次自幂数才叫 ...
- sh_02_判断年龄改进版
sh_02_判断年龄改进版 # 输入用户年龄 age = int(input("请输入年龄:")) # 判断是否满 18 岁 (>=) if age >= 18: # ...
- Jenkins部署从节点
由于jenkins上承载项目太多,需要专门的节点来执行需要构建的操作. 参考:https://www.cnblogs.com/lxs1314/p/7551309.html job仅使用绑定的slave ...
- [51nod1383&1048]整数分解为2的幂:DP
算法一 分析 \(f[x]=f[x-1]+f[x/2] \times [x \equiv 0 \mod 2],O(n)\) 代码 n=int(input()) f=[0]*(n+5) f[0]=1 m ...
- Linux shell - shift命令用法(转载)
位置参数可以用shift命令左移.比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shift命令相当于shift 1. 非常 ...