实验课老师要求写的,学习了网上n多大佬的博客后,自己写了一个简单的记事本程序

效果图:

实现代码:

package test;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

public class Notepad extends JFrame implements ActionListener {

private static final long serialVersionUID = -6200727203246728269L;

JTextArea jTextArea;

// 文本框组件

JScrollPane jScrollPane;

// 滚动条组件

JToolBar jToolBar;

// 工具条组件

JMenuBar jMenuBar;

// 菜单栏组件

JMenu jMenu;

// 菜单组件

JMenuItem jMenuItem1;

// 子菜单组件

JMenuItem jMenuItem2;

// 子菜单组件

JFileChooser jFileChooser;

// 文件选择组件

JButton jButton1;

// 按钮组件

JButton jButton2;

// 按钮组件

JButton jButton3;

// 按钮组件

FileReader fileReader;

FileWriter fileWriter;

// 文件IO流

BufferedReader bufferedReader;

BufferedWriter bufferedWriter;

// 缓存IO流

public Notepad() {

jTextArea = new JTextArea();

// 创建一个文本区域

jScrollPane = new JScrollPane(jTextArea);

// 创建一个滚动条,并且加到文本居于上

jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

// 设置滚动条出现方式为“当需要时”

jToolBar = new JToolBar();

// 新建一个工具条

jButton1 = new JButton(new ImageIcon(Notepad.class.getResource("copy.png")));

// 新建一个按钮,图标为"copy.png"

jButton1.setActionCommand("复制");

// 设置按钮命令名称为“复制”

jButton1.addActionListener(this);

// 监听“复制”按钮的行为

jButton2 = new JButton(new ImageIcon(Notepad.class.getResource("paste.png")));

jButton2.setActionCommand("粘贴");

jButton2.addActionListener(this);

jButton3 = new JButton(new ImageIcon(Notepad.class.getResource("cut.png")));

jButton3.setActionCommand("剪切");

jButton3.addActionListener(this);

jToolBar.add(jButton1);

jToolBar.add(jButton2);

jToolBar.add(jButton3);

// 给工具条加上按钮

jMenuBar = new JMenuBar();

// 新建菜单栏

jMenu = new JMenu("文件");

// 新建菜单,名称为“文件”

jMenuItem1 = new JMenuItem("打开");

// 新建子菜单,名称为“打开”

jMenuItem1.setActionCommand("打开");

//设置子菜单命令名称为“打开”

jMenuItem1.addActionListener(this);

//监听“打开”子菜单的行为

jMenuItem2 = new JMenuItem("保存");

jMenuItem2.setActionCommand("保存");

jMenuItem2.addActionListener(this);

jMenuBar.add(jMenu);

jMenu.add(jMenuItem1);

jMenu.add(jMenuItem2);

this.setJMenuBar(jMenuBar);

//添加菜单栏

this.add(jToolBar, BorderLayout.NORTH);

//在窗口上方添加工具条

this.add(jScrollPane, BorderLayout.CENTER);

//添加窗口中间添加滚动条与文本框

this.setTitle("记事本");

//设置窗口名称为“记事本”

this.setSize(700, 800);

//设置大小

this.setLocationRelativeTo(null);

//设置窗口居中显示

this.setVisible(true);

//设置窗口可见

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

//设置关闭窗口的方式为关闭进程

}

public void actionPerformed(ActionEvent e) {

//实现ActionListener接口

String str = e.getActionCommand();

//得到用户触发的命令

if (str.equals("打开")) {

jFileChooser = new JFileChooser();

//新建文件选择组件

jFileChooser.setDialogTitle("打开");

//设置标题为“打开”

jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

//设置选择文件模式为“只可以选择文件”

jFileChooser.showOpenDialog(null);

//设置默认路径为null

jFileChooser.setVisible(true);

//设置窗口可见

String ads = jFileChooser.getSelectedFile().getAbsolutePath();

//得到选择文件的绝对地址

try {

fileReader = new FileReader(ads);

//打开文件

bufferedReader = new BufferedReader(fileReader);

String now, all = "";

while ((now = bufferedReader.readLine()) != null) {//读取文件

all += now + '\n';

}

jTextArea.setText(all);//将读取到的内容显示到文本框中

} catch (Exception e2) {

JOptionPane.showMessageDialog(this, e2.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

//抛出错误对话框,并显示错误信息

} finally {

try {

bufferedReader.close();//操作完要关闭文件,避免数据丢失

fileReader.close();

} catch (Exception e3) {

JOptionPane.showMessageDialog(this, e3.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

}

}

}

if (str.equals("保存")) {

jFileChooser = new JFileChooser();

jFileChooser.setDialogTitle("另存为");

jFileChooser.showOpenDialog(null);

jFileChooser.setVisible(true);

String ads = jFileChooser.getSelectedFile().getAbsolutePath();

try {

fileWriter = new FileWriter(ads);

bufferedWriter = new BufferedWriter(fileWriter);

String all = jTextArea.getText();

bufferedWriter.write(all);

} catch (Exception e2) {

JOptionPane.showMessageDialog(this, e2.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

} finally {

try {

bufferedWriter.close();

fileWriter.close();

} catch (Exception e3) {

JOptionPane.showMessageDialog(this, e3.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

}

}

}

if (str.equals("复制")) {

try {

jTextArea.copy();

} catch (Exception e2) {

JOptionPane.showMessageDialog(this, e2.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

}

}

if (str.equals("粘贴")) {

try {

jTextArea.paste();

} catch (Exception e2) {

JOptionPane.showMessageDialog(this, e2.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

}

}

if (str.equals("剪切")) {

try {

jTextArea.cut();

} catch (Exception e2) {

JOptionPane.showMessageDialog(this, e2.getMessage(), "警告", JOptionPane.ERROR_MESSAGE);

}

}

}

public static void main(String[] args) {

Notepad notepad = new Notepad();

}

}

java超级记事本_使用java实现记事本(超详细解释)相关推荐

  1. java课程设计日历记事本_《Java程序设计》课程设计日历记事本.doc

    <Java程序设计>课程设计日历记事本 PAGE PAGE 2 本科生课程设计 课程名称 Java程序设计课程设计 课程编号 j1620011 题目 日历记事本 学号 2008116222 ...

  2. 二级java模拟软件_二级JAVA超级模拟软件

    无忧考吧二级JAVA超级模拟软件是无忧考吧为计算机的广大考生们推出的一款计算机二级java语言考试模拟的软件,用户通过模拟可以快速找出自己的不足,可以更好的进行复习,让你在考试中更加稳定的通过! 基本 ...

  3. 用java编写计算器_用Java编写一个简单的计算器

    1.使用记事本或eclipse等编程工具,建立一个图形界面应用程序. 2.程序完成简单的四则计算功能 3.用户可以在名为Number1和Number2的文本输入框中输入2个操作数,然后点击下面的4个按 ...

  4. java高级教程_高级Java教程

    java高级教程 课程大纲 学习Java基础很容易. 但是,真正钻研该语言并研究其更高级的概念和细微差别将使您成为一名出色的Java开发人员. 网络上充斥着"软","便宜 ...

  5. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  6. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

  7. java 包命名_【Java】包的命名规则

    命名规范 包:所有单词的字母小写,之后每个单词用-隔开,如 org.nemo.demo 常量:所有单词的字母大写,之后每个单词用_隔开,如 FLAG 类:所有单词的首字母大写,如 TestJava p ...

  8. java 图片效果_使用Java进行图片底片化效果处理

    使用java代码读取图片,并进行底片化处理 util importjava.awt.image.BufferedImage;importjava.io.File;importjava.util.Arr ...

  9. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

最新文章

  1. 365天里有300天都想辞职,换个公司,你的2019会更好吗?
  2. 游戏CFHD,狙可不是随便就起的,狙击的作用是辅助
  3. java开发和基于asp.net开发有什么优越性?_java语言的入门开始介绍
  4. python中文字体怎么设置_python matplotlib 中文字体设置
  5. Sql Server 中利用游标对table 的数据进行分组统计式输出…
  6. 强制好评,付费去广告,诈骗应用横行AppStore
  7. R count函数_【函数分享】PHP函数str_word_count()分享(202098)
  8. 【转】女人最想要的是什么
  9. 修复Win10任务栏开始菜单等系统图标无法点击问题
  10. Python图片文字提取
  11. 5.11 按照文字的笔划进行数据的排序 [原创Excel教程]
  12. 1058. 选择题(20)-PAT乙级真题
  13. Au 效果器详解:单频段压缩器
  14. 前端页面项目——博客系统
  15. 振兴农村循环经济 和数链串起农业“生态链”
  16. 【Python】实现中英文互译
  17. 虚拟主机做app服务器,虚拟主机能装app吗
  18. 2022-2027年中国大件运输行业发展前景及投资战略咨询报告
  19. Netty作为服务端的websocket通信
  20. AMOS试用期过期激活

热门文章

  1. 关于“给PHP源代码加密“的代码分析
  2. yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署
  3. 何恺明霸榜!近10年里的具有影响力的一作(年轻)AI学者大盘点!谷歌机构排名第一!...
  4. MySQL错误码解释
  5. FaceNet:人脸识别和聚类的统一嵌入
  6. php面试题2021(php面试题2020)
  7. overridePendingTransition设定两个activity之间的转场动画没有效果,但不报错! (大神帮帮我吧,代码如下,谢谢)
  8. 使用Visual Studio快速搭建网站
  9. 在计算机上创建一个本地用户账户,多种方法教你创建和删除Win10本地账户?
  10. C语言习题答案【1】(仅参考)