IDEA中用java实现简单记事本(保姆级)

 这个代码是我参考了其他众多文章,总结精简出来的规范代码,能注释的代码我都给注释了,直接拷贝后导入相关包即可使用。感谢大家的一键三连!

package 实习;

import com.sun.corba.se.impl.protocol.JIDLLocalCRDImpl;

import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Calendar;

//以上都是一些需要用到的库类
public class 下拉式菜单 {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(下拉式菜单::creatGUI);
    }

    public static void creatGUI() {
        //创建可视化窗口
        JFrame f = new JFrame("###的小本本");
        //设定显示位置,左上角为(0,0),根据笔记本电脑的显示分辨率设置成在正中间显示
        f.setLocation(480, 270);//这是显示窗口的左上角坐标
        //设定窗口大小为屏幕1/2倍(电脑显示分辨率)
        f.setSize(960, 540);//我电脑显示分辨率为1920*1080
        //创建文本域用来打字显示出来的
        JTextArea WBY = new JTextArea("Hello");//这里可以输入东西到时候打开窗体自动显示出来
        WBY.setFont(new Font("", Font.BOLD, 25));
        //设置文本域为自动换行
        WBY.setLineWrap(true);
        //将文本域添加到含有下拉框的面板中
        JScrollPane MB = new JScrollPane(WBY);
        //将含有下拉框的面板放入内容面板中
        f.add(MB);
        //创建一个菜单栏
        JMenuBar cdl = new JMenuBar();
        //创建菜单栏上的5个菜单并且设置字体和大小
        JMenu m1 = new JMenu("文件");
        JMenu m2 = new JMenu("编辑");
        JMenu m3 = new JMenu("字体大小");
        JMenu m4 = new JMenu("字体颜色");
        JMenu m5 = new JMenu("帮助文档");
        m1.setFont(new Font("", Font.BOLD, 25));
        m2.setFont(new Font("", Font.BOLD, 25));
        m3.setFont(new Font("", Font.BOLD, 25));
        m4.setFont(new Font("", Font.BOLD, 25));
        m5.setFont(new Font("", Font.BOLD, 25));
        //在菜单的基础上创建下拉可选菜单项按钮
        JMenuItem x1 = new JMenuItem("新建");
        JMenuItem x2 = new JMenuItem("保存");
        JMenuItem x3 = new JMenuItem("打开");
        JMenuItem x4 = new JMenuItem("退出");
        JMenuItem x5 = new JMenuItem("复制");
        JMenuItem x6 = new JMenuItem("粘贴");
        JMenuItem x7 = new JMenuItem("裁剪");
        JMenuItem x8 = new JMenuItem("删除");
        JMenuItem x9 = new JMenuItem("大");
        JMenuItem x10 = new JMenuItem("中");
        JMenuItem x11 = new JMenuItem("小");
        JMenuItem x12 = new JMenuItem("红色");
        JMenuItem x13 = new JMenuItem("绿色");
        JMenuItem x14 = new JMenuItem("蓝色");
        JMenuItem x15 = new JMenuItem("黑色");
        JMenuItem x16 = new JMenuItem("百度");
        //为下拉可选菜单项设置字体和大小
        x1.setFont(new Font("s", Font.BOLD, 20));
        x2.setFont(new Font("s", Font.BOLD, 20));
        x3.setFont(new Font("s", Font.BOLD, 20));
        x4.setFont(new Font("s", Font.BOLD, 20));
        x5.setFont(new Font("s", Font.BOLD, 20));
        x6.setFont(new Font("s", Font.BOLD, 20));
        x7.setFont(new Font("s", Font.BOLD, 20));
        x8.setFont(new Font("s", Font.BOLD, 20));
        x9.setFont(new Font("s", Font.BOLD, 40));
        x10.setFont(new Font("s", Font.BOLD, 30));
        x11.setFont(new Font("s", Font.BOLD, 20));
        x12.setFont(new Font("s", Font.BOLD, 20));
        x13.setFont(new Font("s", Font.BOLD, 20));
        x14.setFont(new Font("s", Font.BOLD, 20));
        x15.setFont(new Font("s", Font.BOLD, 20));
        x16.setFont(new Font("s", Font.BOLD, 20));
        //给颜色下拉菜单项分别设置相应的背景色,这样展现就会直观一点了
        x12.setBackground(Color.RED);
        x13.setBackground(Color.GREEN);
        x14.setBackground(Color.BLUE);
        x15.setBackground(Color.BLACK);
        //实现新建记事本按钮的功能
        x1.addActionListener(e -> {
            creatGUI();
        });//再次调用该方法创建另外一个记事本
        //实现保存记事本按钮的功能
        x2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e2) {
                //创建一个窗体并且设置窗体标题和保存功能
                FileDialog fileDialog = new FileDialog(f, "保存文件至", FileDialog.SAVE);
                //保存文件的对话框设置为可见
                fileDialog.setVisible(true);
                //获取保存的路径和设置的文件名
                String absPath = fileDialog.getDirectory() + fileDialog.getFile();
                try {//用来检测是否设置了保存路径
                    //设置输出文件名为保存的路径下面的文件名
                    BufferedWriter wr = new BufferedWriter(new FileWriter(absPath));
                    //获取文本域字符串
                    String s = WBY.getText();
                    //开始写入
                    wr.write(s);
                    //写完关闭
                    wr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        //实现打开记事本按钮的功能
        x3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e2) {
                //创建一个窗体并且设置窗体标题和打开功能
                FileDialog fileDialog = new FileDialog(f, "打开文件", FileDialog.LOAD);
                //打开文件的对话框设置为可见
                fileDialog.setVisible(true);
                //获取打开的路径和设置的文件名
                String absPath = fileDialog.getDirectory() + fileDialog.getFile();
                try {//用来检测是否设置了打开路径
                    //设置读入文件名为打开的路径下面的文件名
                    BufferedReader re = new BufferedReader(new FileReader(absPath));
                    String line;
                    while ((line = re.readLine()) != null)
                        //只要文件中不为空就不断追加到文本框中
                        WBY.append(line + '\n');
                    //读取完毕结束
                    re.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        //实现退出记事本按钮的功能
        x4.addActionListener(e -> System.exit(0));
        //调用文件工具箱下的系统剪贴板方法
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        //实现复制文本按钮的功能
        x5.addActionListener(e -> {
            //将选中的文本内容存入text中
            String text = WBY.getSelectedText();
            //传送到字符串里面存着
            StringSelection selection = new StringSelection(text);
            //将得到的内容放入到剪切板中
            clipboard.setContents(selection, null);
        });
        //实现粘贴文本按钮的功能
        x6.addActionListener(e -> {
            //获取系统剪贴板中的内容
            Transferable text = clipboard.getContents(null);
            //判断剪贴板中的内容是否支持文本
            if (text.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                try {
                    //强制转换剪贴板中的内容
                    String text1 = (String) text.getTransferData(DataFlavor.stringFlavor);
                    //获取当前光标的位置
                    int n=WBY.getCaretPosition();
                    //插入复制的内容到文本框的光标后面
                    WBY.insert(text1,n);
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
        });
        //实现裁剪文本按钮的功能
        x7.addActionListener(e -> {
            //将得到的选择文本内容存入text中
            String text = WBY.getSelectedText();
            //传送到字符串里面存着
            StringSelection selection = new StringSelection(text);
            //将得到的内容放到剪切板中
            clipboard.setContents(selection, null);
            //将选中文本start到end之间的内容替换为空白""
            WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
        });
        //实现删除文本按钮的功能
        x8.addActionListener(e -> {
            //将选中文本start到end之间的内容替换为空白
            WBY.replaceRange("", WBY.getSelectionStart(), WBY.getSelectionEnd());
        });
        //实现字体变大的功能
        x9.addActionListener(e -> {
            WBY.setFont(new Font("", Font.BOLD, 40));
        });
        //实现字体变中等大小的功能
        x10.addActionListener(e -> {
            WBY.setFont(new Font("", Font.BOLD, 30));
        });
        //实现字体变小的功能
        x11.addActionListener(e -> {
            WBY.setFont(new Font("", Font.BOLD, 20));
        });
        //实现字体颜色变红的功能
        x12.addActionListener(e -> {
            WBY.setForeground(Color.RED);
        });
        //实现字体颜色变绿的功能
        x13.addActionListener(e -> {
            WBY.setForeground(Color.GREEN);
        });
        //实现字体颜色变蓝的功能
        x14.addActionListener(e -> {
            WBY.setForeground(Color.BLUE);
        });
        //实现字体颜色变黑的功能
        x15.addActionListener(e -> {
            WBY.setForeground(Color.BLACK);
        });
        //实现打开帮助文档的功能
        x16.addActionListener(e -> {
            //创建消息提示框,包括显示内容和弹窗标题
            JOptionPane.showMessageDialog(f,
                    "百度!", "提示", JOptionPane.INFORMATION_MESSAGE);
        });
        //分别给5个菜单添加各自的下拉菜单项
        m1.add(x1);
        m1.addSeparator();//两个菜单项之间添加界线
        m1.add(x2);
        m1.addSeparator();//两个菜单项之间添加界线
        m1.add(x3);
        m1.addSeparator();//两个菜单项之间添加界线
        m1.add(x4);
        m2.add(x5);
        m2.addSeparator();//两个菜单项之间添加界线
        m2.add(x6);
        m2.addSeparator();//两个菜单项之间添加界线
        m2.add(x7);
        m2.addSeparator();//两个菜单项之间添加界线
        m2.add(x8);
        m3.add(x9);
        m3.addSeparator();//两个菜单项之间添加界线
        m3.add(x10);
        m3.addSeparator();//两个菜单项之间添加界线
        m3.add(x11);
        m4.add(x12);
        m4.addSeparator();//两个菜单项之间添加界线
        m4.add(x13);
        m4.addSeparator();//两个菜单项之间添加界线
        m4.add(x14);
        m4.addSeparator();//两个菜单项之间添加界线
        m4.add(x15);
        m5.add(x16);
        //添加这5个菜单到菜单栏
        cdl.add(m1);
        cdl.add(m2);
        cdl.add(m3);
        cdl.add(m4);
        cdl.add(m5);
        //给窗体添加完善好的菜单栏
        f.setJMenuBar(cdl);
        //记事本设置为可见
        f.setVisible(true);
        //点击×号结束应用程序
        f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }
}

 开始运行后结果如下图所示:IDEA中用java实现简单记事本(保姆级)_第1张图片

你可能感兴趣的:(java,idea,小程序)