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登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...
随机推荐
- 5G技术被夸大?专家来测试一下
像大多数新技术一样,5G也带来了大量媒体宣传.这种炒作中有些伴随着事实的严重扭曲和5G技术实际功能的放大.但是,有一个普遍共识的说法是5G将实现“极速”,换句话说,与前几代产品相比,带宽要高得多. 这 ...
- 脚本.sh
一:什么是脚本 shell文件,是跑在linux中的命令集合 #!/bin/sh 必须在文件的第一行 符号#! 用来告诉系统它后面的参y数是用来执行该文件的程序
- 约瑟夫环(CVTE、网易2014.3.16笔试题offerP228)
题目:0,1,2,……,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字. 法一:用环形链表模拟圆圈的经典算法(时间复杂度O(nm),空间复杂 ...
- python+selenium封装UI自动化框架
seleinum框架 框架的思想: 解决我们测试过程中的问题:大量的重复步骤,用自动化来实现 1)配置和程序的分离 2)测试数据和程序的分离 3)不懂编程的人员可以方便使用:使用的 ...
- 工作笔记--js-点赞按钮和踩踩按钮互斥??怎么写?
效果图: html: css: .an{ margin-top:0px; position: relative; .popzframe,.popcframe{ display: none; word- ...
- sh_02_判断年龄改进版
sh_02_判断年龄改进版 # 输入用户年龄 age = int(input("请输入年龄:")) # 判断是否满 18 岁 (>=) if age >= 18: # ...
- 苹果cms开启防红跳转后,提示模板文件不存在解决方法
1,苹果cms开启防红跳转后,提示模板文件不存在(如下图)这是因为你使用的模板里面缺少苹果cms自带的防红跳转模板导致,遇到这种状况后需要把苹果cms默认自带的( template/default_p ...
- vue中的methods,conputed,watcher
todo 1,computed(计算属性) 属性的结果会被缓存, 除非依赖的响应式属性变化才会重新计算, 主要 当做属性来使用;(虽然是个方法,但是当做属性使用)(场景:引用一些经过操作的数据) co ...
- centos7 yum安装jdk
安装之前先检查一下系统有没有自带open-jdk 命令: rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj 如果没有输入信息表示没有安装. ...
- 地图服务 纬度、经度对应坐标轴x,y
记下,供自己参考,中国地区的经纬度,经度大,纬度小 如上海经纬度为:(经度, 纬度)(y, x)(lon, lat) 121.48 31.22 纬度---lat----x轴 经度---lon---y轴