Java程序之简单“记事本”

要求:如下图所示,记事本具有新建、打开文本、保存、关闭等功能。

算法思路:

这是一个使用Java Swing库创建的简单文本编辑器。它包含一个菜单栏,其中包含“文件”菜单以及四个子菜单项:“新建”、“打开”、“保存”和“关闭”。用户可以在文本区域中输入和编辑文本,然后通过点击相应的菜单项来执行操作。

1. 创建一个名为Text的类,实现ActionListener接口。
2. 在Text类的构造方法中,初始化JFrame、JMenuBar、JMenu、JMenuItem、JTextArea、JFileChooser等组件,并设置它们的属性和事件监听器。
3. 在actionPerformed方法中,根据用户点击的菜单项执行相应的操作:
   - 如果点击了“新建”菜单项,则创建一个新的Text实例。
   - 如果点击了“打开”菜单项,则弹出文件选择对话框,让用户选择一个文件,然后将文件内容显示在文本区域中。
   - 如果点击了“保存”菜单项,则弹出文件选择对话框,让用户选择保存位置,然后将文本区域的内容保存到文件中。
   - 如果点击了“关闭”菜单项,则退出程序。

源代码:

Text.java

package Question10;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

public class Text implements ActionListener {
    private JFrame jFrame;
    private JMenuBar jMenuBar;
    private JMenu jMenu;
    private JMenuItem jMenuItemNew, jMenuItemOpen, jMenuItemSave, jMenuItemClose;
    private JTextArea jTextArea;
    private JFileChooser jFileChooser;
    private Font font;
    private JScrollPane jScrollPane;

    public Text() {

        jFrame = new JFrame("记事本");
        font=new Font("楷体",Font.PLAIN,15);

        jMenuBar = new JMenuBar();
        jMenu = new JMenu("文件");
        jMenu.setFont(font);

        jFrame.setJMenuBar(jMenuBar);
        jMenuBar.add(jMenu);

        jMenuItemNew = new JMenuItem("新建");
        jMenu.add(jMenuItemNew);
        jMenuItemNew.setFont(font);
        jMenuItemNew.addActionListener(this);

        jMenuItemOpen = new JMenuItem("打开");
        jMenu.add(jMenuItemOpen);
        jMenuItemOpen.setFont(font);
        jMenuItemOpen.addActionListener(this);

        jMenuItemSave = new JMenuItem("保存");
        jMenu.add(jMenuItemSave);
        jMenuItemSave.setFont(font);
        jMenuItemSave.addActionListener(this);

        jMenu.addSeparator();
        jMenuItemClose = new JMenuItem("关闭");
        jMenu.add(jMenuItemClose);
        jMenuItemClose.setFont(font);
        jMenuItemClose.addActionListener(this);

        jTextArea = new JTextArea();
        jFrame.add(jTextArea);
        jScrollPane =new JScrollPane(jTextArea);
        jFrame.add(jScrollPane);

        jFileChooser = new JFileChooser();

        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jFrame.setSize(new Dimension(500, 500));
        jFrame.setLocation(new Point(400, 90));
        jFrame.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object object = e.getSource();
        if (object == jMenuItemNew) {
            new Text();
        } else if (object == jMenuItemOpen) {
            jFileChooser.showOpenDialog(null);
            File file = jFileChooser.getSelectedFile();

            try {
                InputStream inputStream = new FileInputStream(file);
                byte[] bt = new byte[inputStream.available()];
                inputStream.read(bt);
                jTextArea.setText(new String(bt));
                inputStream.close();

            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                throw new RuntimeException(ex);
            }
        }
        else if(object==jMenuItemSave)
        {
            jFileChooser.showSaveDialog(null);
            File file = jFileChooser.getSelectedFile();
            try {
                FileWriter fileWriter = new FileWriter(file);
                fileWriter.write(jTextArea.getText());
                fileWriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        else if(object==jMenuItemClose)
        {
            System.exit(1);
        }
    }
}

JiShiBen.java 

package Question10;

public class JiShiBen {
    public static void main(String[] args) {
        new Text();

    }
}

运行结果: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/736229.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web APIs】DOM 文档对象模型 ⑤ ( 获取特殊元素 | 获取 html 元素 | 获取 body 元素 )

文章目录 一、获取特殊元素1、获取 html 元素2、获取 body 元素3、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/APIgetElementById 函数参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/API/Document/getE…

torchinfo这个包中的summary真的很好用

1.安装直接使用 pip 进行安装即可: pip install torchinfo 2.导入该模块 from torchinfo import summary 3.使用模块 summary(model)#这里的model是你自己的model,可以添加参数进去 4.效果图: 第一个图片是直接打印model吗,…

华为某员工爆料:三年前985本科起薪30万,现在硕士起薪还是30w,感慨互联网行情变化

“曾经的30万年薪,是985本科学历的‘标配’,如今硕士也只值这个价?” 一位华为员工的爆料,揭开了互联网行业薪资变化的冰山一角,也引发了不少人的焦虑:互联网人才“通货膨胀”的时代,真的结束了…

【docker1】指令,docker-compose,Dockerfile

文章目录 1.pull/image,run/ps(进程),exec/commit2.save/load:docker save 镜像id,不是容器id3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一…

【Git】win本地 git bash:Connect reset by 20.205.243.166 port22报错问题解决

win10 git bash 控制台 reset 22端口拒绝连接问题: Connection reset by 20.205.243.166 port 221、22端口 无法连接 ssh -T gitgithub.com2、尝试用443端口 仍然无法连接 ssh -T -P 443 gitgithub.com3、重写 git clone 地址 url,全局添加 https 前缀…

国产大模型技术创新分析

国产模型百舸争流,技术创新百花齐放 2023年下半年起,国内大模型领域迎来“百模大战”,各大厂商纷纷加速生成式AI的研发与突破,模型持续迭代升级,展现了人工智能技术的蓬勃发展与无限潜力。 中国大模型市场迅猛发展&am…

MapReduce程序设计2

要求 1、数据集stock-daily,包含A股近4000只股票的今年以来的日数据;数据集stock-daily-30d仅包含最近30个交易日数据,根据自己计算机性能选择。 数据来源:https://www.joinquant.com/help/api/help?nameJQData 2、数据集stoc…

每日签到页面模板组件,简单好用,用了会上瘾的那种

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。 今日给…

基于S7-200PLC的全自动洗衣机控制系统设计

wx供重浩:创享日记 那边对话框发送:plc洗衣 获取完整无水印设计说明报告(含程序梯形图) 1.自动洗衣机PLC控制的控制要求 1.1全自动洗衣机的基本结构、工作流程和工作原理 1.自动洗衣机的基本结构 2.自动洗衣机的工作流程 自动洗…

理解 iOS 开发中的 NS_ENUM 和 NS_OPTIONS

在开发 iOS 应用程序时,理解 NS_ENUM 和 NS_OPTIONS 的使用至关重要,因为它们在定义和管理枚举和选项方面起着重要作用。在本文中,我们将深入探讨 NS_ENUM 和 NS_OPTIONS 之间的区别、使用场景以及如何有效地实现它们。 NS_ENUM NS_ENUM 用…

Linux的基本指令第二篇

1.cat - 查看文件 语法:cat [选项] [文件] 功能: 查看目标文件的内容 -b 对非空输出行编号 -n对输出的所有行编号 -s不输出多行空行 现有一个文件test.c cat -n test.c cat -b test.c cat -s test.c 创建一个新文件 加入源文件的内容 || …

啥移动硬盘格式能更好兼容Windows和Mac系统 NTFS格式苹果电脑不能修改 paragon ntfs for mac激活码

对于同时使用Windows和Mac操作系统的用户而言,选择一个既能确保数据互通又能满足大容量存储需求的移动硬盘格式尤为重要。下面我们来看看啥移动硬盘格式能更好兼容Windows和Mac系统,NTFS格式苹果电脑不能修改的相关内容。 一、啥移动硬盘格式能更好兼容…

若依微服务项目09 - swagger如何不显示某个模块的接口文档

在若依微服务项目中,如果不想暴露某个模块的swagger的接口文档,需要怎么做? 本文以ruoyi-gen模块进行举例说明。 默认情况下,可以看到这里包含了ruoyi-gen模块,我们要做的是,要将ruoyi-gen进行隐藏。 最终的…

VMware连接XShell保姆教程

打开虚拟机后进入终端在终端中 1.配置静态IP 在终端中输入 ifconfig回车, 注意这里需要记住这个IP每个电脑的都不一样 在输入ip addr 2.接着输入cd /etc/sysconfig/network-scripts/进入配置网络文件夹 3.通过Vim编辑器编辑内容 vim ifconfig-ens33 进入界面…

Stm32超声波测距实验

一.任务需求 1. 采用stm32F103和HC-SR04超声波模块, 使用标准库或HAL库 定时器中断,完成1或2路的超声波障碍物测距功能。 2. 当前智能汽车上一般配置有12路超声波雷达,这些专用超声波雷达内置了MCU,直接输出数字化的测距结果&am…

三阶段复习

6.21 静态库与动态库 库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。静态库在链接期把整个库文件都拷贝到可执行文件中,而动态库在链接期只是把索引文件拷贝到可执行文件中&…

【漏洞复现】畅捷通T+ keyEdit.aspx SQL漏洞

0x01 产品简介 畅捷通 T 是一款灵动,智慧,时尚的基于互联网时代开发的管理软件,主要针对中小型工贸与商贸企业,尤其适合有异地多组织机构(多工厂,多仓库,多办事处,多经销商)的企业,…

预制直埋聚氨酯保温管

😀宝子们,今天来给大家介绍一下预制聚氨酯直埋保温管🎉! 它可是个好东西👍,具有超强的保温性能🧊,能够有效保持管道内的温度😎。 而且它还很耐用💪&#xff0…

【华为HCIA数通网络工程师真题-构建互联互通的IP网络】

文章目录 一、选择题 一、选择题 1、缺省情况下,广播网络上OSPF协议RouterDeadInterval是? 40s (ospf 的 RouterDeadInterval 为四倍 hello time 时间,hello time 周期默认为10s,所以 RouterDeadInterval 默认为 40s …

JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完…