用Java制作一个记事本

如何用Java去写一个简单的记事本代码呢

这个简单的记事本带码具有以下的功能:新建、打开、保存和关闭四个简单的功能,主要是来分享怎么去学习和使用的窗口、菜单、IO流.

那我们就自己来看代码吧

import javax.swing.*; 				
import javax.xml.transform.Source;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.*;
import java.nio.charset.StandardCharsets;    //以上都为导包

public class Notepad implements ActionListener {

    JFrame jf;   //声明窗口类
    JMenuBar jmb; //声明栏类
    JMenu jm; // 声明菜单类对象
    JMenuItem newItem,openItem,saveItem,exitItem; //声明菜单项类对象
    JTextArea jta; //声明多行文本框类
    JScrollPane jsp;//带滚动条容器类
    File file; //创建File                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
    //将这些对象都定义在构造方法的外面额能够让不同的类去调用它
    
    public Notepad(){ //创建一个构造方法
        String path="E:"+ File.separator+"精彩图片"+File.separator+"Java测试图"+File.separator; //通道字符串写出一个路径
        jf=new JFrame("记事本"); //创建窗口类对象
        jmb=new JMenuBar();
        jm=new JMenu("文件");
        newItem=new JMenuItem("新建(N)",new ImageIcon(path+"新建.png"));
        Icon ic=new ImageIcon(path+"打开.jpg");
        openItem=new JMenuItem("打开(O)",ic);
        saveItem=new JMenuItem("保存(S)",new ImageIcon(path+"保存.jpg"));
        exitItem=new JMenuItem("关闭(X)",new ImageIcon(path+"关闭.jpg"));
        jta=new JTextArea();
        jsp=new JScrollPane(jta);
        file=new File(new String());


        newItem.setMnemonic('N');
        openItem.setMnemonic('O');
        saveItem.setMnemonic('S');
        exitItem.setMnemonic('X');
        newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK/*|ActionEvent.ALT_MASK*/));
        openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK/*|ActionEvent.ALT_MASK*/));
        saveItem.setAccelerator(KeyStroke.getKeyStroke(/*KeyEvent.VK_S*/'S', ActionEvent.CTRL_MASK|ActionEvent.ALT_MASK));
        exitItem.setAccelerator(KeyStroke.getKeyStroke(/*KeyEvent.VK_X*/'X', ActionEvent.CTRL_MASK|ActionEvent.ALT_MASK));

        newItem.addActionListener(this);
        openItem.addActionListener(this);
        saveItem.addActionListener(this);
        exitItem.addActionListener(this);


        jm.add(newItem);
        jm.add(openItem);
        jm.add(saveItem);
        jm.addSeparator();
        jm.add(exitItem);

        jmb.add(jm);
        jf.setJMenuBar(jmb);
        jf.add(jsp);
        jf.setSize(400,500);

        ImageIcon imageIcon=new ImageIcon("E:"+ File.separator+"精彩图片"+File.separator+"Java测试图"+File.separator+"记事本.png");;
        jf.setIconImage(imageIcon.getImage());
        jf.setVisible(true);


    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj=e.getSource();
        if(obj instanceof JMenuItem){
            JMenuItem item=(JMenuItem) obj;
            if(item==newItem){
                new Notepad();
            }
            else if(item==openItem){
                JFileChooser chooser=new JFileChooser();
                chooser.showOpenDialog(null);
                file=chooser.getSelectedFile();
                try {
                    InputStream fis=new FileInputStream(file);
                    byte[] b=new byte[fis.available()];
                    fis.read(b);
                    jta.setText(new String(b));
                }catch (IOException event){
                    event.printStackTrace();
                }

            }

            else if(item==saveItem){
                JFileChooser chooser=new JFileChooser();
                chooser.showSaveDialog(null);
                file=chooser.getSelectedFile();
                try {
                    OutputStream fos=new FileOutputStream(file);
                    String str=jta.getText();
                    byte[] byt=str.getBytes(StandardCharsets.UTF_8);
                    fos.write(byt);
                    fos.close();
                }catch (IOException event){
                    event.printStackTrace();
                }

            }

            else if(item==exitItem){
                System.exit(1);
            }
        }

    }
}

补加一点内容 有些小伙伴可能疑惑代码怎么不能跑运气起来
要运行的话 new Notepad()出来就可以啦 很简单哈

public static void main(String[] args) {
        new Notepad();
    }

创一个新类加进去 或者加到倒数第二行里面去(也即是被一个 } 包住.

你可能感兴趣的:(Java日常学习,GUI,java,开发语言,后端)