记事本的打开与保存

一些总结

* 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编程时而不显示菜单选项,改变语句顺课序解决,后查阅资料需要将可见性设置在逻辑最后。

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 #include #i ...

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

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

随机推荐

ASP.NET MVC 5 系列 学习笔记 目录 (持续更新...)

前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...

使用SignalR+Asp.net创建实时聊天应用程序

一.概述: 使用 ASP.NET 那么 SignalR 2 创建一个实时聊天应用程序.将 SignalR 添加 MVC 5 应用程序中,并创建聊天视图发送并显示消息. 在Demo中,将学习Signal ...

android图像处理系列之三--图片色调饱和度、色相、亮度处理

原图: 处理后: 下面贴代码: 一.图片处理层: package com.jacp.tone.view; import java.util.ArrayList; import android.cont ...

oracle数据库删除数据Delete语句和Truncate语句的对比

oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分 ...

Xcode极速代码,征服Xcode

当谈论到iOS开发工具时,有一个肯定是所有iOS开发者都熟悉的,那就是Xcode.Xcode是使所有令人赞叹的iOS app成为可能的驱动力. Xcode能帮助我们完成非常多的事情,但是这也有点让人头 ...

洛谷 P1057 解题报告

P1057 传球游戏 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹 ...

2198: 小P当志愿者送餐

题目描述 在ICPC程序设计大赛期间,小P作为志愿者的任务是给各个学校送盒饭,小P一次最多可以携带M份盒饭.总共有N个学校来参加比赛,这N个学校的休息点在一条笔直的马路边一字排开,路的一头是小P取盒饭 ...

极光推送 JPush 简介 集成 MD

Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

TPshop隐藏index.php

有些朋友提到关于TPshop 隐藏index.php 一问题, 可以修改 Application\Common\Conf\config.php 文件代码 'common', 'AUTH_CODE' = ...

py_faster_rcnn识别出来的结果好多红框重叠

py_faster_rcnn识别出来的结果好多红框重叠, 可以通过调节demo.py中的NMS_THRESH的值进行限制. NMS_THRESH表示非极大值抑制,这个值越小表示要求的红框重叠度越小,0 ...

java记事本打开功能_Java简易实现记事本的打开与保存相关推荐

  1. java记事本统计功能_JAVA 运用流编程实现简单的记事本功能

    1 /** 2 * 我的记事本(界面+功能)3 */ 4 packagecom.test3;5 6 import javax.swing.*;7 import java.awt.event.*;8 i ...

  2. java记事本课程设计_Java课程设计记事本的功能实现课程论文附代码

    主要内容: 1设计背景 现在随着计算机科学日渐成熟,其强大的功能已经为人们深刻认识,它已经入人类社会的各个领域并发挥着越来越重要的作用,记事本是日常生活中常用到的工具,用户可以在其中方便地输入文字,从 ...

  3. java buffer 记事本_GitHub - programmer-zhang/DuangCalender: 简易日历记事本(java+android端)...

    在设计日历记事本时,需要编写4个Java类:CalendarPad.class.Year.class.NotePad.class.month.class. 日历记事本除了需要编写的上述3个Java所给 ...

  4. java简单小程序_Java简易登录注册小程序

    这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...

  5. java ee打印功能_Java EE 8的前5个新功能

    java ee打印功能 备受期待的Java Enterprise Edition 8版本具有两个令人兴奋的新API(JSON绑定1.0和Java EE Security 1.0),并且对当前API进行 ...

  6. java ee打印功能_Java EE:异步构造和功能

    java ee打印功能 介绍 Java EE具有许多API和构造以支持异步执行. 从可伸缩性和性能的角度来看,这是至关重要的. 让我们假设2个模块相互交互. 当模块A (发送方)以同步方式向模块B ( ...

  7. java 记事本全选_java 编写的记事本程序怎么实现复制 黏贴 剪切 全选的功能 ?...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import javax.swing.*;import java.awt.event.*;import java.io.*;import java.awt ...

  8. java记事本应用程序_Java教程:使用记事本编写运行Java程序

    Java教程经过上节的操作已经配置完了 Java 的开发环境,但并不清楚所配置的开发环境是否真的可以运行 Java 应用程序.为了解除这个疑虑,也为了使读者对开发 Java 应用程序的步骤有一个初步的 ...

  9. java简单文本编译器_java -简易文本编辑器

    import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; /** * Title:java ...

最新文章

  1. 什么是内卷?华为内部这篇文章读懂
  2. Linux下C语言之文件操作
  3. 思科模拟器-虚拟局域网的划分与配置实验
  4. Python Django模板templates渲染及配置
  5. “回合制”就是退步?《博德之门3》有话要说
  6. 浅析Asp.net MVC 中Ajax的使用
  7. BZOJ4819: [Sdoi2017]新生舞会
  8. python的数字类型有哪些子类型_PYTHON-基本数据类型-数字类型,字符串类型,列表类型-练习...
  9. rails logger 和 session, cookies, request方面的笔记
  10. 小说Symbian的签名
  11. MATLAB 输出当前时间
  12. 申请百度文字识别APIkey和Secret Key+文字验证码识别案例
  13. POI解决读入Excel内存溢出
  14. jquery选择器空格与大于号、加号与波浪号的区别
  15. 2016-年蓝桥杯C-(A组)赛题-网友年龄
  16. 线性关系r范围_一个简单线性回归和多项式回归在R中的实现示例
  17. IDEA使用java开发时一个奇葩问题
  18. 【二分,找规律】Day 14 提高组模拟C组 T1 小麦亩产一千八
  19. Kotlin第一课Hello World —— Package、main、fun、import、变量、注释
  20. cocos2d-x 学习笔记(1)关于cocos2d-x(环境配置,项目结构,文件说明)

热门文章

  1. 一道面试题:遇到大规模Oracle坏块该怎么处理?
  2. jdk1.7 1.8新特性
  3. Swift类属性 static
  4. Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则
  5. PaddlePaddle飞桨OCR文本检测——入门安装GPU版(一)
  6. 剑指offer(C++)-JZ36:二叉搜索树与双向链表(数据结构-树)
  7. vue不是内部或外部命令_vue脚手架
  8. go mysql delete_go 操作mysql、增删改查
  9. 、简述global关键字的作用_二十三、Python变量作用域(局部变量和全局变量)
  10. 鼠标移入事件_NSTrackingArea 监听鼠标移入与移出事件