GUI_记事本
来源:互联网 发布:python base64 json 编辑:程序博客网 时间:2024/06/05 16:15
需求:设计简单的记事本程序。其中已实现【打开】【保存】【退出】3个功能。
代码如下:
package com.cn.gui.event;
import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.ScrollPane;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import com.cn.gui.util.FrameUtil;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:2016年8月13日19:44:16
* Desc:
需求:设计简单的记事本程序。其中已实现【打开】【保存】【退出】3个功能。
*/
public class NotePad {
JFrame frame = new JFrame("记事本");
//菜单条
JMenuBar menuBar = new JMenuBar();
//文件菜单
JMenu fileMenu = new JMenu("文件");
JMenu editMenu = new JMenu("编辑");
JMenu aboutMenu = new JMenu("帮助");
JMenu switchMenu = new JMenu("切换工作目录");
//菜单项
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem exitItem = new JMenuItem("退出");
JMenuItem aboutItem = new JMenuItem("关于");
JMenuItem switchMenuItem1 = new JMenuItem("目录1");
JMenuItem switchMenuItem2 = new JMenuItem("目录2");
JMenuItem switchMenuItem3 = new JMenuItem("目录3");
//文本域
JTextArea textArea = new JTextArea(); //JTextArea()中输入只有"\n",所以后面需要替换改成"\r\n"
//TextArea textArea = new TextArea();//TextArea()中输入带"\r\n", 没有JTextArea的毛病,但是不好看
//滚动条
ScrollPane scrollPane = new ScrollPane();
public void initNotePad(){
//菜单添加菜单项
switchMenu.add(switchMenuItem1);
switchMenu.add(switchMenuItem2);
switchMenu.add(switchMenuItem3);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(exitItem);
aboutMenu.add(aboutItem);
//菜单添加菜单
editMenu.add(switchMenu);
//菜单条添加菜单
menuBar.add(fileMenu);
menuBar.add(editMenu);
menuBar.add(aboutMenu);
//窗体添加菜单条
frame.add(menuBar, BorderLayout.NORTH);
//滚动条添加文本域
scrollPane.add(textArea);
//窗体添加滚动条
frame.add(scrollPane);
//自定义函数工具,初始化窗体
FrameUtil.initFrame(frame, 500, 600);
//给打开openItem添加事件
openItem.addActionListener(new ActionListener() {
FileReader fileReader = null;
@Override
public void actionPerformed(ActionEvent e) {
//打开前先清空文本域
clearTextArea(textArea);
try {
//创建文件对话框
FileDialog fileDialog = new FileDialog(frame, "请选择打开的文件", FileDialog.LOAD);
//设置对话框可见
fileDialog.setVisible(true);
//获取用户选择的路径与要打开文件的文件名
String pathName = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
//创建输入流对象
fileReader = new FileReader(new File(pathName, fileName));
//创建字符缓冲流,读取输入流中的数据
char[] buf = new char[1024];
int length = 0;
while((length = fileReader.read(buf)) != -1){
//将读取到的数据写入到textArea中
textArea.setText(textArea.getText() + new String(buf, 0, length));
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
//关闭资源
try {
fileReader.close();
System.out.println("关闭输入流成功");
} catch (IOException e1) {
System.out.println("关闭输入流失败");
e1.printStackTrace();
}
}
}
});
//给保存saveItem添加事件
saveItem.addActionListener(new ActionListener() {
FileOutputStream fileOutputStream = null;
@Override
public void actionPerformed(ActionEvent e) {
try {
//创建文件对话框
FileDialog fileDialog = new FileDialog(frame, "请选择保存的路径", FileDialog.SAVE);
//设置对话框可见
fileDialog.setVisible(true);
//获取用户选择的路径与输入的文件名
String pathName = fileDialog.getDirectory();
String fileName = fileDialog.getFile();
//创建一个输出流对象
fileOutputStream = new FileOutputStream(new File(pathName, fileName));
//获取文本域的内容,把内容写出
String content = textArea.getText();
content = content.replace("\n", "\r\n");//"\n"替换成"\r\n"
fileOutputStream.write(content.getBytes());
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally{
//关闭资源
try {
fileOutputStream.close();
System.out.println("关闭输出流成功");
} catch (IOException e1) {
System.out.println("关闭输出流失败");
e1.printStackTrace();
}
}
}
});
//给退出菜单项添加事件
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int opt = JOptionPane.showConfirmDialog(frame, "确定退出?");
if(opt == 0){
System.exit(1);//退出jvm 如果参数是0表示正常退出jvm,非0表示异常退出jvm
}else if(opt == 1 || opt == 2){
return;//结束当前函数
}
}
});
}
//清空显示文本域
public static void clearTextArea(JTextArea textArea){
String text = textArea.getText();
if(text != null){
textArea.setText("");
}
}
public static void main(String[] args) {
new NotePad().initNotePad();
}
}
0 0
- GUI_记事本
- GUI_成长历程_part1
- GUI_成长历程_part2
- GUI_成长历程_part3
- GUI_成长历程_part4
- GUI_文件搜索器
- GUI_窗体关闭案例
- GUI_一级菜单案例
- GUI_多级菜单案例
- GUI_模拟四则运算案例
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- 记事本
- openCV学习笔记-模糊图像之blur
- L2-015. 互评成绩
- 多线程之原子变量CAS算法(二)
- 栈
- 卸载mysql后重新安装mysql出现问题
- GUI_记事本
- asp.net制作网页代码页关于where条件引用控件值的困惑
- Friendship POJ
- 177. [USACO Jan07] 有限制的素数
- Docker镜像使用帮助
- error:LNK2005 已经在*.obj中定义
- ldap的增删改查基本操作
- 下压栈:链表实现
- 在PHP语言中使用JSON和将json还原成数组