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.KeyStroke(KeyEvent.VK_O,
java.awt.Event.CTRL_MASK));
// 创建保存菜单选项
JMenuItem save = new JMenuItem("保存⽂件 ");
save.KeyStroke(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 {
notepad++//定义⼀个窗体容器⽤来接受传⼊的窗体
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 = Directory() + File();
//如果选中⽂件,但点击了取消,会得到null直接返回null,不影响后续操作
File() == null){
System.out.File());
return;
}
BufferedReader bufre = null;
//try catcah 处理编译异常
try {
//创建字符缓冲输⼊流对象,构造⽅法由字符输⼊流绑定输⼊地址
bufre = new BufferedReader(new FileReader(absPath));
//创建字节数组,存储读⼊的数据
char[] chars = new char[1024];
//len为读取的有效位数
int len = 0;
//打开前清空⽂本区域
//使⽤read读取内容
while ((len = ad(chars)) != -1) {
//提取每次读的字符,⽣成字符串
String str = new String(chars,0,len);
/
/拼接每⼀次得到的字符串
}
bufre.close();
}catch(IOException obj){
//获取异常信息
}
}
}
“保存”
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 = Directory() +File(); BufferedWriter bufw = null;
try {
//字符缓冲输出流,构造⽅法传⼊字符输出流绑定输出路径 bufw = new BufferedWriter(new FileWriter(absPath));
String str = Text();
//向⽂件写⼊数据
bufw.write(str);
//关闭并刷新输出流
bufw.close();
}catch (IOException obj){
}
}
}
bug:swing编程时⽽不显⽰菜单选项,改变语句顺课序解决,后查阅资料需要将可见性设置在逻辑最后。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论