一步步码记事本(Java版)--麻雀虽小五脏俱全

本文详细介绍了如何使用Java Swing构建一个简易记事本,包括创建窗口、菜单栏、添加文件操作(打开、保存、另存为)、编辑操作(复制、粘贴、剪切)和格式设置(字体、颜色)。通过逐步讲解,读者可以了解到Java GUI编程的基本技巧。
摘要由CSDN通过智能技术生成

1. 框架和技术概要:

使用Java Swing框架来实现记事本的界面设计和交互。

2. 简单查询的高效解决方案:

要实现一个简单的记事本,我们需要考虑以下步骤:

1) 创建一个JFrame窗口作为记事本的主界面。

2) 在JFrame中添加一个JTextArea组件用于文本输入和显示。

3) 创建一个JMenuBar组件作为菜单栏,包含文件、编辑、格式等菜单项。

4) 在文件菜单项中添加打开、保存、另存为等子菜单项。

5) 在编辑菜单项中添加复制、粘贴、剪切等子菜单项。

6) 在格式菜单项中添加字体、颜色等子菜单项。

7) 实现各个菜单项的功能,例如打开文件、保存文件、复制文本等。

8) 添加快捷键来实现菜单项功能的快速访问。

代码示例:

```java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.io.*;

public class SimpleNotepad extends JFrame implements ActionListener {

    private JTextArea textArea = new JTextArea();

    public SimpleNotepad() {

        setTitle("Simple Notepad");

        setSize(500, 500);

        setLocationRelativeTo(null);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        // 添加菜单栏

        JMenuBar menuBar = new JMenuBar();

        setJMenuBar(menuBar);

        // 添加文件菜单项

        JMenu fileMenu = new JMenu("文件");

        menuBar.add(fileMenu);

        JMenuItem openItem = new JMenuItem("打开");

        openItem.addActionListener(this);

        openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));

        fileMenu.add(openItem);

        JMenuItem saveItem = new JMenuItem("保存");

        saveItem.addActionListener(this);

        saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));

        fileMenu.add(saveItem);

        JMenuItem saveAsItem = new JMenuItem("另存为");

        saveAsItem.addActionListener(this);

        fileMenu.add(saveAsItem);

        // 添加编辑菜单项

        JMenu editMenu = new JMenu("编辑");

        menuBar.add(editMenu);

        JMenuItem copyItem = new JMenuItem("复制");

        copyItem.addActionListener(this);

        copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));

        editMenu.add(copyItem);

        JMenuItem pasteItem = new JMenuItem("粘贴");

        pasteItem.addActionListener(this);

        pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));

        editMenu.add(pasteItem);

        JMenuItem cutItem = new JMenuItem("剪切");

        cutItem.addActionListener(this);

        cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK));

        editMenu.add(cutItem);

        // 添加格式菜单项

        JMenu formatMenu = new JMenu("格式");

        menuBar.add(formatMenu);

        JMenuItem fontItem = new JMenuItem("字体");

        fontItem.addActionListener(this);

        formatMenu.add(fontItem);

        JMenuItem colorItem = new JMenuItem("颜色");

        colorItem.addActionListener(this);

        formatMenu.add(colorItem);

        // 添加文本框

        textArea.setFont(new Font("宋体", Font.PLAIN, 16));

        textArea.setLineWrap(true);

        JScrollPane scrollPane = new JScrollPane(textArea);

        getContentPane().add(scrollPane, BorderLayout.CENTER);

        setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {

        String command = e.getActionCommand();

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

            JFileChooser fileChooser = new JFileChooser();

            if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {

                File file = fileChooser.getSelectedFile();

                try {

                    BufferedReader reader = new BufferedReader(new FileReader(file));

                    textArea.read(reader, null);

                    reader.close();

                } catch (IOException ex) {

                    ex.printStackTrace();

                }

            }

        } else if (command.equals("保存")) {

            JFileChooser fileChooser = new JFileChooser();

            if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {

                File file = fileChooser.getSelectedFile();

                try {

                    BufferedWriter writer = new BufferedWriter(new FileWriter(file));

                    textArea.write(writer);

                    writer.close();

                } catch (IOException ex) {

                    ex.printStackTrace();

                }

            }

        } else if (command.equals("另存为")) {

            JFileChooser fileChooser = new JFileChooser();

            if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {

                File file = fileChooser.getSelectedFile();

                try {

                    BufferedWriter writer = new BufferedWriter(new FileWriter(file));

                    textArea.write(writer);

                    writer.close();

                } catch (IOException ex) {

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值