java实现记事本

简介: java实现记事本

效果



代码

package example;
 
/**
* ┏┓   ┏┓
*┏┛┻━━━ ┻┓
*┃       ┃  
*┃   ━   ┃
*┃ ┳┛ ┗┳ ┃
*┃       ┃
*┃   ┻   ┃
*┃       ┃
*┗━┓   ┏━┛
*  ┃   ┃神兽保佑
*  ┃   ┃代码无BUG!
*  ┃   ┗━━━┓
*  ┃       ┣┓
*  ┃       ┏┛
*  ┗┓┓┏━┳┓┏┛
*   ┃┫┫ ┃┫┫
*   ┗┻┛ ┗┻┛             
*
*!!!!!!!!!!!!!!!!!!Get busy living or get busy dying!!!!!!!!!!!!!       
*/
 
/**
 * 记事本启动类
 * 
 * @author www.javayihao.top
 * @Time 2019
 */
public class App {
    public static void main(String[] args) {
        // 启动自定义窗口对象
        EditorFrame editor = new EditorFrame();
    }
}
 
package example;
 
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.text.DefaultStyledDocument;
 
/**
 * java实现记事本程序主程序
 * 
 * @author Administrator
 *
 */
/*
 * 自定义窗口类EditorFrame继承JFrame实现动作监听接口ActionListener
 */
public class EditorFrame extends JFrame implements ActionListener {
 
    // 定义相关属性
    private JMenuBar menuBar;// 頂部菜单栏
    private JMenu menuFile, menuEdit, menuAbout;// 菜单文件、编辑、关于
    // 菜单项新建、 打开、保存、退出、剪切、复制、粘贴、关于
    private JMenuItem itemNewFile, itemOpen, itemSave, itemExit, itemCut, itemCopy, itemPaste, itemAbout;
    private JToolBar toolBar;// 工具条
    // 按钮新建、 打开、保存、退出、剪切、复制、粘贴、关于
    private JButton butNewFile, butOpen, butSave, butExit, butCut, butCopy, butPaste, butAbout;
    private JTextPane textPane;// 编辑窗口
    private JLabel label;// 底部标签栏
    private JFileChooser fileChooser;// 文件选择器
    private JScrollPane scrollPane;
    /*
     * 构造方法
     */
    public EditorFrame() {
        // 实例化菜单栏
        menuBar = new JMenuBar();
        // 实例化菜单
        menuFile = new JMenu("文件");
        menuEdit = new JMenu("编辑");
        menuAbout = new JMenu("关于");
        // 实例化菜单项并添加事件监听
        itemNewFile = new JMenuItem("新建");
        itemNewFile.addActionListener(this);// 设置监听
        itemNewFile.setActionCommand("newFile");
        itemOpen = new JMenuItem("打开");
        itemOpen.addActionListener(this);// 设置监听
        itemOpen.setActionCommand("open");
        itemSave = new JMenuItem("保存");
        itemSave.addActionListener(this);// 设置监听
        itemSave.setActionCommand("save");
        itemExit = new JMenuItem("退出");
        itemExit.addActionListener(this);// 设置监听
        itemExit.setActionCommand("exit");
        itemCut = new JMenuItem("剪切");
        itemCut.addActionListener(this);// 设置监听
        itemCut.setActionCommand("cut");
        itemCopy = new JMenuItem("复制");
        itemCopy.addActionListener(this);// 设置监听
        itemCopy.setActionCommand("copy");
        itemPaste = new JMenuItem("粘贴");
        itemPaste.addActionListener(this);// 设置监听
        itemPaste.setActionCommand("paste");
        itemAbout = new JMenuItem("关于");
        itemAbout.addActionListener(this);// 设置监听
        itemAbout.setActionCommand("about");
        // 文件设置菜单项
        menuFile.add(itemNewFile);
        menuFile.add(itemOpen);
        menuFile.add(itemExit);
        menuFile.add(itemSave);
        // 编辑设置菜单项
        menuEdit.add(itemCut);
        menuEdit.add(itemCopy);
        menuEdit.add(itemPaste);
        // 关于设置菜单
        menuAbout.add(itemAbout);
        // 菜单栏设置菜单
        menuBar.add(menuFile);
        menuBar.add(menuEdit);
        menuBar.add(menuAbout);
        this.setJMenuBar(menuBar);
        // 实例化工具条
        toolBar = new JToolBar();
        // 实例化按钮
        butNewFile = new JButton("新建");
        butNewFile.addActionListener(this);
        butNewFile.setActionCommand("newFile");
        butOpen = new JButton("打开");
        butOpen.addActionListener(this);// 设置监听
        butOpen.setActionCommand("open");
        butSave = new JButton("保存");
        butSave.addActionListener(this);// 设置监听
        butSave.setActionCommand("save");
        butExit = new JButton("退出");
        butExit.addActionListener(this);// 设置监听
        butExit.setActionCommand("exit");
        butCut = new JButton("剪切");
        butCut.addActionListener(this);// 设置监听
        butCut.setActionCommand("cut");
        butCopy = new JButton("复制");
        butCopy.addActionListener(this);// 设置监听
        butCopy.setActionCommand("copy");
        butPaste = new JButton("粘贴");
        butPaste.addActionListener(this);// 设置监听
        butPaste.setActionCommand("paste");
        butAbout = new JButton("关于");
        butAbout.addActionListener(this);// 设置监听
        butAbout.setActionCommand("about");
        // 工具条设置按钮
        toolBar.add(butNewFile);
        toolBar.add(butOpen);
        toolBar.add(butSave);
        toolBar.add(butExit);
        toolBar.add(butCut);
        toolBar.add(butCopy);
        toolBar.add(butPaste);
        toolBar.add(butAbout);
 
        // 实例化编辑窗口
        textPane = new JTextPane();
        label = new JLabel("www.javayihao.top ----by xiaoyuan");
 
        // 实例化文件选择器
        fileChooser = new JFileChooser();
        // 实例化滚动条
        scrollPane = new JScrollPane(textPane);
        // 窗口容器中添加組件(使用边界布局)
        Container container = getContentPane(); // 得到容器
        container.add(toolBar, BorderLayout.NORTH); // 增加工具栏
        container.add(scrollPane, BorderLayout.CENTER);
        container.add(label, BorderLayout.SOUTH); // 增加状态栏
 
        // 初始化窗口
        this.setTitle("小猿记事本");// 窗口标题
        this.setSize(600, 300);// 窗体大小
        this.setIconImage((new ImageIcon("images/logo.png")).getImage());// 设置图标
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置可关闭进程
        int width = Toolkit.getDefaultToolkit().getScreenSize().width;// 获得屏幕宽度
        int height = Toolkit.getDefaultToolkit().getScreenSize().height;// 获得屏幕高度
        this.setLocation((width - 500) / 2, (height - 400) / 2);// 剧中显示
        this.setVisible(true);// 设置窗体可见
        this.setResizable(true);// 可改变窗体大小
    }
 
    /*
     * 事件方法
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("newFile")) {
            textPane.setDocument(new DefaultStyledDocument());// 清空文档
        } else if (e.getActionCommand().equals("open")) {
            int i = fileChooser.showOpenDialog(EditorFrame.this); // 显示打开文件对话框
            if (i == JFileChooser.APPROVE_OPTION) { // 点击对话框中打开选项
                File f = fileChooser.getSelectedFile(); // 得到选择的文件
                try {
                    InputStream is = new FileInputStream(f); // 得到文件输入流
                    textPane.read(is, "d"); // 读入文件到文本窗格
                } catch (Exception ex) {
                    ex.printStackTrace(); // 输出出错信息
                }
            }
        } else if (e.getActionCommand().equals("save")) {
            int i = fileChooser.showSaveDialog(EditorFrame.this); // 显示保存文件对话框
            if (i == JFileChooser.APPROVE_OPTION) { // 点击对话框中保存按钮
                File f = fileChooser.getSelectedFile(); // 得到选择的文件
                try {
                    FileOutputStream out = new FileOutputStream(f); // 得到文件输出流
                    out.write(textPane.getText().getBytes()); // 写出文件
                } catch (Exception ex) {
                    ex.printStackTrace(); // 输出出错信息
                }
            }
        } else if (e.getActionCommand().equals("exit")) {
            System.exit(0);
        } else if (e.getActionCommand().equals("cut")) {
            textPane.cut();// 調用文本剪切方法
        } else if (e.getActionCommand().equals("copy")) {
            textPane.copy();// 調用复制方法
        } else if (e.getActionCommand().equals("paste")) {
            textPane.paste();// 调用粘贴方法
        } else if (e.getActionCommand().equals("about")) {
            JOptionPane.showMessageDialog(EditorFrame.this, "www.javayihao.top---简单的文本编辑器演示");
        }
    }
 
}
 

嗯,差不多了,一个多小时了,写着玩玩挺舒服的,代码不足之处就是重复代码过多,本来打算自定一个事件数组,使用java8中的Stream流特性给组件以此添加事件,为了看着清楚就这样喽....

更多java实战项目 文章 关注微信公众号 java一号


相关文章
|
Java
Java记事本编写HelloWorld程序
Java记事本编写HelloWorld程序
133 0
|
6月前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
68 0
|
6月前
|
Java
基于Java Swing实现的日历记事本系统【源码+报告文档】
基于Java Swing实现的日历记事本系统【源码+报告文档】
|
小程序 Java
Java——在命令提示符(cmd)窗口下,使用记事本创建并运行一个Java程序(整数a+b)
Java——在命令提示符(cmd)窗口下,使用记事本创建并运行一个Java程序(整数a+b)
Java——在命令提示符(cmd)窗口下,使用记事本创建并运行一个Java程序(整数a+b)
|
Java
在记事本上实现简单的Java程序及原理解析(Hello World!!!)
在记事本上实现简单的Java程序及原理解析(Hello World!!!)
224 0
在记事本上实现简单的Java程序及原理解析(Hello World!!!)
|
Java
编写Java程序,使用菜单组件制作一个记事本编辑器
编写Java程序,使用菜单组件制作一个记事本编辑器
236 0
编写Java程序,使用菜单组件制作一个记事本编辑器
|
Java Windows
Java初学者作业——使用记事本编写Java程序
Java初学者作业——使用记事本编写Java程序
260 0
Java初学者作业——使用记事本编写Java程序
|
移动开发 Java 存储
杨老师课堂_Java核心技术下之控制台模拟记事本案例
预览效果图: 背景介绍: 编写一个模拟记事本的程序通过在控制台输入指令,实现在本地新建文件打开文件和修改文件等功能。 要求在程序中:   用户输入指令1代表“新建文件”,此时可以从控制台获取用户输入的文件内容;   指令2代表打开文件,此时可将指定路径的txt文件的内容展现到控制台,   指令3代...
1147 0