这是一个java编写的记事本
package net.etwo.notepad;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
*
* @author etwo
* @version 1.0
*
*/
public class TestNotepad {
private JFrame jframe;// 主窗体
JPanel jpanel;// 面板
JMenuBar jmenuBar = new JMenuBar();// 菜单面板
JMenu jmenuFile, jmenuEdit;// 主菜单
JMenuItem jmenuItemOpen, jmenuItemNew, jmenuItemSave, jmenuItemSaveAs,
jmenuItemExit;// 菜单中的子菜单
JTextArea jtextArea;// 文本框
JScrollPane jscrollPane;// 带滑动条的
JFileChooser jfileChooser;//文件选择器
File currentFile;
public TestNotepad() {
// TODO Auto-generated constructor stub
jframe = new JFrame("我的记事本");
jpanel = new JPanel();
jmenuBar = new JMenuBar();
jtextArea = new JTextArea();
jtextArea.setLineWrap(true);//设置自动换行
jscrollPane = new JScrollPane(jtextArea);
jfileChooser = new JFileChooser();
jfileChooser.setFileFilter(new FileNameExtensionFilter("文本文件(*.txt)", "txt"));
jmenuFile = new JMenu("文件(F)");
jmenuFile.setMnemonic('F');
jmenuEdit = new JMenu("编辑(E)");
jmenuEdit.setMnemonic('E');
jmenuItemNew = new JMenuItem("新建(N)", 'N');
jmenuItemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK));
jmenuItemOpen = new JMenuItem("打开(O)", 'O');
jmenuItemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK));
jmenuItemOpen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int res = jfileChooser.showOpenDialog(jframe);
if(res == jfileChooser.APPROVE_OPTION) {
currentFile = jfileChooser.getSelectedFile();
jtextArea.setText("");
openFile(currentFile);
jframe.setTitle(currentFile + "-记事本");
System.out.println("s");
}
}
});
jmenuItemSave = new JMenuItem("保存(S)", 'S');
jmenuItemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
jmenuItemSave.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
saveFile();
}
});
jmenuItemSaveAs = new JMenuItem("另存为(A)", 'A');
jmenuItemSaveAs.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int res = jfileChooser.showSaveDialog(jframe);
if(res == jfileChooser.APPROVE_OPTION) {
currentFile = jfileChooser.getSelectedFile();
jframe.setTitle(currentFile + "-记事本");
saveFileAs(currentFile, jtextArea.getText().replaceAll("\n", "\r\n"));
}
}
});
jmenuBar.add(jmenuFile);
jmenuBar.add(jmenuEdit);
jmenuFile.add(jmenuItemNew);
jmenuFile.add(jmenuItemOpen);
jmenuFile.add(jmenuItemSave);
jmenuFile.add(jmenuItemSaveAs);
jpanel.setLayout(new BorderLayout(2, 1));
jpanel.add(jmenuBar, "North");
jpanel.add(jscrollPane, "Center");
jframe.add(jpanel);
jframe.setSize(500, 500);
jframe.setLocationRelativeTo(null);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}
public void saveFile() {
if(currentFile == null) {
int res = jfileChooser.showSaveDialog(jframe);
if(res == jfileChooser.APPROVE_OPTION) {
currentFile = jfileChooser.getSelectedFile();
jframe.setTitle(currentFile + "-记事本");
}
}
if(currentFile != null) {
saveFileAs(currentFile, jtextArea.getText().replaceAll("\n", "\r\n"));
}
}
public void saveFileAs(File file, String text) {
PrintWriter pw = null;
try {
pw = new PrintWriter(file);
pw.write(text);
pw.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(pw != null) {
pw.close();
}
}
}
public void openFile(File file) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String str = br.readLine();
while (str != null) {
jtextArea.append(str + "\n");
System.out.println(str);
str = br.readLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if(br != null) {
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new TestNotepad();
}
}
分享到:
相关推荐
基于java的贝儿米幼儿教育管理系统答辩PPT.pptx
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
基于java的消防物资存储系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
TA_lib库(whl轮子),直接pip install安装即可,下载即用,非常方便,各个python版本对应的都有。 使用方法: 1、下载下来解压; 2、确保有python环境,命令行进入终端,cd到whl存放的目录,直接输入pip install TA_lib-xxxx.whl就可以安装,等待安装成功,即可使用! 优点:无需C++环境编译,下载即用,方便
使用软件自带的basic脚本编辑制作的脚本 低版本软件无法输出Excel报告,可以通过脚本方式实现这一功能
基于java的就业信息管理系统答辩PPT.pptx
25法理学背诵逻辑.apk.1g
基于java的大学生校园兼职系统答辩PPT.pptx
做到代码,和分析的源数据
本压缩包资源说明,你现在往下拉可以看到压缩包内容目录 我是批量上传的基于SpringBoot+Vue的项目,所以描述都一样;有源码有数据库脚本,系统都是测试过可运行的,看文件名即可区分项目~ |Java|SpringBoot|Vue|前后端分离| 开发语言:Java 框架:SpringBoot,Vue JDK版本:JDK1.8 数据库:MySQL 5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat 开发软件: idea/eclipse(推荐idea) Maven包:Maven3.3.9+ 系统环境:Windows/Mac
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
适用于ensp已经入门人群的学习,有一定难度
基于java的数码论坛系统设计与实现答辩PPT.pptx
tornado-6.4.1-cp38-abi3-macosx_10_9_universal2.whl
基于java的医院信管系统答辩PPT.pptx
项目经过测试均可完美运行! 环境说明: 开发语言:java jdk:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse
tornado-4.2.tar.gz
链表 合并两个链表,链表基础操作