package unit_two;import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;class TextEditorFunction extends JFrame implements ActionListener {JFrame jf;    //初始化组件JMenuBar jmb;JPanel jp;JMenu file, edit, view, help;JTextArea jta;JScrollPane jsp;File nowfile = null;//用于表示当前打开的文件boolean wasSaved = true;//判断当前文件是否已保存的状态TextEditorFunction() {//使用构造函数初始化组件内容jf = new JFrame("记事本1.0");jta = new JTextArea(300, 200);//设置文本域的大小jta.getDocument().addDocumentListener(new DocumentListener() {//为文本域新增一个事件监听用于判断文件是否发生改变@Overridepublic void insertUpdate(DocumentEvent e) {wasSaved = false;}@Overridepublic void removeUpdate(DocumentEvent e) {wasSaved = false;}@Overridepublic void changedUpdate(DocumentEvent e) {wasSaved = false;}});jmb = new JMenuBar();jsp = new JScrollPane(jta);JMenuItem i;file = new JMenu("File");//设置File下拉菜单里面的内容file.add(i = new JMenuItem("打开"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);file.addSeparator();file.add(i = new JMenuItem("保存"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);file.add(i = new JMenuItem("另存为"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);file.addSeparator();file.add(i = new JMenuItem("退出"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);edit=new JMenu("Edit");//设置Edit下拉菜单里面的内容edit.add(i=new JMenuItem("复制"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);edit.add(i=new JMenuItem("粘贴"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);edit.add(i=new JMenuItem("剪切"));i.setFont(new Font("宋体",Font.PLAIN,15));edit.addSeparator();i.addActionListener(this);edit.add(i=new JMenuItem("查找"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);edit.add(i=new JMenuItem("替换"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);view=new JMenu("View");//设置View下拉菜单里面的内容view.add(i=new JMenuItem("颜色"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);view.add(i=new JMenuItem("字体"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);help=new JMenu("Help");//设置Help下拉菜单里面的内容help.add(i=new JMenuItem("帮助"));i.setFont(new Font("宋体",Font.PLAIN,15));i.addActionListener(this);}public int askSave() {//退出查看是否要保存文件if (!wasSaved) {return 0;}return 1;}public void openFile(File f){String path=f.getAbsolutePath();String text="";String str="";try{FileReader fileReader=new FileReader(path);//读取文件BufferedReader bf=new BufferedReader(fileReader); //创建一个缓冲区,提高效率while ((str=bf.readLine())!=null){text=text+str+"\t\n";}jta.setText(text);//关闭文件bf.close();fileReader.close();}catch (Exception e){e.printStackTrace();}}public void saveFile(File f){String path=f.getAbsolutePath();try{FileWriter fileWriter=new FileWriter(path);//将内容写入文件BufferedWriter bw=new BufferedWriter(fileWriter); //创建一个缓冲区,提高效率bw.write(this.jta.getText());//关闭文件bw.close();fileWriter.close();}catch (Exception e){e.printStackTrace();}}void init(){jmb.add(file);//将所有菜单加入菜单栏中jmb.add(edit);jmb.add(view);jmb.add(help);jf.setJMenuBar(jmb);jf.add(jsp, BorderLayout.CENTER);this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);this.addWindowListener(new WindowAdapter(){@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);if(askSave()==0)return;elseSystem.exit(0);}});personal();jf.setVisible(true);}void personal(){jf.setBounds(300,150,600,600);jmb.setBackground(Color.LIGHT_GRAY);jta.setFont(new Font("宋体",Font.PLAIN,20));file.setFont(new Font("宋体",Font.BOLD,20));edit.setFont(new Font("宋体",Font.BOLD,20));view.setFont(new Font("宋体",Font.BOLD,20));help.setFont(new Font("宋体",Font.BOLD,20));}@Overridepublic void actionPerformed(ActionEvent e) {String s=e.getActionCommand();if(s.equals("打开")){if(askSave()==0){return;}JFileChooser jfc1=new JFileChooser();jfc1.showOpenDialog(this);//弹出打开文件的对话框File f=jfc1.getSelectedFile();if(f!=null){openFile(f);nowfile=f;}return;}else if(s.equals("保存")){if(!wasSaved){if(nowfile==null){JFileChooser jfc1=new JFileChooser();jfc1.showOpenDialog(this);//弹出打开文件的对话框File f=jfc1.getSelectedFile();if(f!=null){saveFile(f);nowfile=f;}}else{saveFile(nowfile);}return;}}else if(s.equals("另存为")){JFileChooser jfc1=new JFileChooser();jfc1.showOpenDialog(this);//弹出打开文件的对话框File f=jfc1.getSelectedFile();//f为选定文件if(f!=null){saveFile(f);nowfile=f;}return;}else if(s.equals("退出")){if(askSave()==0){return;}else{System.exit(0);}}else if(s.equals("帮助")){JOptionPane.showMessageDialog(this,"很抱歉,这边暂时只实现了打开、保存、另存为、退出、颜色的功能,其他功能敬请期待...");}else if(s.equals("颜色")){Color c=JColorChooser.showDialog(this,"请选择颜色",Color.BLACK);jta.setForeground(c);}else{JOptionPane.showMessageDialog(this,"很抱歉,此功能暂未开通服务,敬请期待...");}}
}
public class TextEditor {public static void main(String[] args) {TextEditorFunction f=new TextEditorFunction();f.init();}
}

效果图:

用java实现简易记事本功能相关推荐

  1. java 最简易记事本,带详细注释,仅供参考!

    之前一直在web上编程,没用过GUI,这几天看了GUI的一部分,写了个简易的记事本,抛砖引玉吧 代码说话,一看就懂 import javax.swing.JTextArea; import java. ...

  2. java编写简易计算器_java实现简易计算器功能

    本文为大家分享了java实现简易计算器功能,具体内容如下 题目: 编写一个模拟计算器的程序.在面板中添加一个文本框(显示按键及运算结果). 10个数字按钮(0~9).4个运算按钮(加.减.乘.除).一 ...

  3. Java案例:简易记事本

    Java案例:简易记事本 一.案例演示 二.涉及知识点 1.窗口(JFrame) 2.标签(JLabel) 3.文本区(JTextArea) 4.菜单 5.文件读写 6.事件处理 7.工具栏   三. ...

  4. java 记事本界面_Java图形界面开发之简易记事本

    在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: packa ...

  5. java GUI实现记事本

    1,GUI+异常处理+文件=>简易记事本(面向对象实现) 面向对象其实就可以把一个函数用类和对象实现,把传给函数的值传给类的构造,并执行函数 操作,实现功能.岂不美哉! 2,做项目首先想好思路, ...

  6. java记事本简单,java简单完整记事本

    JAVA 程序设计实 验报告 院 系: 信息工程系 专 业: 计算机应用技术 班 级: 11 计算机 01 班 姓 名: Civen 任课教师: XXX 实验题目: JAVA 简单记事本...... ...

  7. Android简易记事本

    此次做的Android简易记事本的存储方式使用了SQLite数据库,然后界面的实现比较简单,但是,具有增删改查的基本功能,这里可以看一下效果图,如下: 具体操作就是长按可以删除操作,点击可以进行修改, ...

  8. 微信小程序 - 实战小案例 - 简易记事本

    多项技能,好像也不错.学习一下微信小程序. 教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ 简介:一套用来开发在手机微信上运行的app框架,不用安装 组成: ...

  9. Java swing简易浏览器(其二)前进后退与收藏夹实现

    [Java swing简易浏览器(其一)页面显示,超链接跳转与手动输入URL跳转] [Java swing简易浏览器(其二)前进后退与收藏夹实现] [java swing 简易浏览器(其三)下载器,智 ...

最新文章

  1. QT的QBarCategoryAxis类的使用
  2. 使用优化的基于模糊规则的特征选择技术和基于树的集成方法进行山洪敏感性建模--文献阅读
  3. mac vscode设置中文_VSCode编写latex
  4. Oracle 9i 的安装(图解)
  5. CentOS 系统添加网卡
  6. 二.因子图优化学习---董靖博士在深蓝学院的公开课学习(2)
  7. Zookeeper之Watcher机制详解
  8. 程序员的灯下黑:如果你想考研究生或是研究生
  9. CSS选择器优先级计算
  10. [深入浅出WP8.1(Runtime)]文本框(TextBox)
  11. 什么样的终端才是最合适桌面虚拟化的呢?
  12. do_initcalls 的原理
  13. mysql 抓包工具_好用的MySQL抓包工具:sniffer-agent
  14. 1688API接口,item_get_app - 获取1688app上原数据
  15. 找出01二维矩阵中只包含 1 的最大正方形,并输出其面积_java
  16. STM32 ST-LINK Utility使用步骤
  17. Coursera机器学习+deeplearning.ai+斯坦福CS231n
  18. Rhcsa第四次课堂练习
  19. 解决ROS 与 Anaconda 冲突问题
  20. Banner竖向轮播实现

热门文章

  1. 使用call命令在GDB中重复调用某函数
  2. Feign 原理解析
  3. 分布式共识算法(拜占庭容错算法)的系列整理一:PBFT、PoW、PoS、DPos
  4. 大三学生考研VS就业,该如何选择
  5. js制作秒表计时器代码怎么写
  6. QCustomPlot的使用教程(一)
  7. mac goLang安装打不开
  8. Linux shell 脚本之shift 命令实战
  9. java 哈希碰撞_Hash碰撞拒绝服务攻击
  10. 2022年深圳杯A题破除“尖叫效应”与“回声室效应”走出“信息茧房”