记事本的打开与保存


一些总结


* 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简易实现记事本的打开与保存的更多相关文章

  1. 12.JAVA之GUI编程打开与保存文件

    功能:java图形用户界面开发,练习打开保存文件 代码如下: import java.awt.FileDialog; import java.awt.Frame; import java.awt.Me ...

  2. [转载]Java开发在线打开编辑保存Word文件

    Java调用logo是“P”图标的第三方插件,实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 工具/原料   Eclipse或MyEclipse等j ...

  3. [原创]Java开发在线打开编辑保存Word文件(支持多浏览器)

    Java调用PageOffice实现在线编辑保存Word文件(以jsp调用为例,支持SSM.SSH.SpringMVC等流行框架) 1. 下载PageOffice开发包:http://www.zhuo ...

  4. java简易编辑器

    package peng_jun; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...

  5. 编写运行最简单的java程序——使用记事本编写java程序

    第一个java程序--使用记事本编辑 经过上篇文章的java环境搭建成功的小伙伴们可以在自己的计算机上编写属于自己的java程序了yo~ 还没有搭建环境变量的小伙伴请转移到上一篇的随笔中去完成搭建. ...

  6. ajax返回json在 IE下,提示打开或保存的解决方法

    Content-type要设置成 text/html 我是用的mvc jquery.form.js 提交的表单. 返回json响应数据. 结果在ie下提示打开或保存,查看保存的内容.就是我返回的jso ...

  7. java io流 运行错误时,保存异常到文件里面

    java io流 运行错误时,保存异常到文件里面 下面这个实例,运行后,输入数字,为正确,如果输入字符串,则报错,保存错误信息 //运行错误时,保存异常到文件里面 //下面这个实例,运行后,输入数字, ...

  8. 1、Qt Project之基本文件打开与保存

    基本文件打开与保存: 首先是涉及到的头文件,我们需要在mainwindow.h包含头文件: #include <QFileDialog> #include <QFile> #i ...

  9. xpython在Windos下的安装及简单的文本打开、保存

    前几天写自动化部署脚本,用的是paramiko和shell相结合,paramiko可是实现ssh登录,文件及文件夹的上传下载,这些功能,然后一直想自己写个东西出来,于是就想把这些功能我把他放到图形化界 ...

随机推荐

  1. vuex中this.$store.dispatch和this.$store.commit的区别(都是调用vuex中的方法。一个异步一个同步)

    dispatch:含有异步操作,例如向后台提交数据,写法: this.$store.dispatch('action方法名',值) commit:同步操作,写法:this.$store.commit( ...

  2. 用户输入和while 循环

    input 工作原理 函数input()让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中. message = input("need to input ...

  3. 模板引擎ejs

    1.网站 https://ejs.co/ https://ejs.bootcss.com/ 2.app.js var http=require("http"); var ejs = ...

  4. hadoop伪分布式平台搭建

    1. 安装jdk1.7 JAVA_HOME=/home/hadoop/app/jdk1.7.0 vi /etc/profile.d CLASSPATH=.:$JAVA_HOME/lib/dt.jar: ...

  5. rabbitmq 和 kafka 简单的性能测试

    测试环境:ubuntu 15.10 64位 cpu:inter core i7-4790 3.60GHZ * 8 内存:16GB 硬盘:ssd 120GB 软件环境:rabbmitmq 3.6.0   ...

  6. windows10 gcc编译C程序(简单编译)

    参考:http://c.biancheng.net/view/660.html gcc可以一次性完成C语言源程序的编译,也可以分步骤完成:下面先介绍一次性编译过程. 1.生成可执行程序 cd xxx ...

  7. ant design Radio.Group defaultValue 默认选中没生效

    版本问题 (3.10.7 版本中使用 defaultValue) <div> <Radio.Group defaultValue="a" buttonStyle= ...

  8. 当在本地磁盘服务(Windows)中无法删除指定分区时的解决方案

    有时候,我们在使用Windows管理磁盘分区时,可能会出现部分分区无法删除的情况,也就是说右键快捷菜单中没有删除卷的操作项. 此时,我们可以按照如下的步骤进行操作即可完成: Step 1: 以管理员身 ...

  9. Java中创建String的两种方式

    1.在Java中,创建一个字符串有两种方式 String x = "abc";String y = new String("abc"); 这两种方式有什么区别呢 ...

  10. 【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)

    目录 先验概率与后验概率 条件概率公式.全概率公式.贝叶斯公式 什么是朴素贝叶斯(Naive Bayes) 拉普拉斯平滑(Laplace Smoothing) 应用:遇到连续变量怎么办?(多项式分布, ...