我做的一个java简单文本编辑器代码

时间:2023-01-26 19:41:38
下面是我的一个简单java程序代码,可以练习下。
有的功能没弄完,有兴趣的可以完成他,对学java 很有帮助。

package swing;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.event.*;

public class Frame1 extends JFrame {
    Container c = new Container();

    Label la = new Label("请帮助边远山区的可怜儿童们!");

    JMenuBar jmb = new JMenuBar();

    JMenu file = new JMenu("File");

    JMenu edit = new JMenu("Edit");

    JMenu option = new JMenu("Option");

    JMenu about = new JMenu("about");

    JMenuItem open = new JMenuItem("Open");

    JMenuItem save = new JMenuItem("Save as");

    JMenuItem exit = new JMenuItem("Exit");

    JMenuItem copy = new JMenuItem("Copy");

    JMenuItem cut = new JMenuItem("Cut");

    JMenuItem paste = new JMenuItem("Paste");

    JMenuItem delete = new JMenuItem("DeleteAll");

    JMenuItem italic = new JMenuItem("Italic");

    JMenuItem bold = new JMenuItem("Bold");

    JMenuItem version = new JMenuItem("about");

    JMenuItem help = new JMenuItem("help");

    JTextPane ta = new JTextPane();

    JFileChooser chooser = new JFileChooser();

    FileInputStream filestream = null;

    myversion exitversion = new myversion();

    String selected = new String();

    int dot, mark;

    public Frame1() {
        chooser.setSize(400, 350);
        chooser.setDialogTitle("请帮助边远山区的可怜儿童们!");
        chooser.setVisible(true);
        la.setSize(200, 20);
        la.setBackground(Color.orange);
        Font f = new Font("TimesRoman", Font.PLAIN, 16);
        c = this.getContentPane();
        c.setLayout(new BorderLayout());
        c.add(ta, "Center");
        this.setJMenuBar(jmb);
        jmb.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0));
        jmb.add(file);
        jmb.add(edit);
        jmb.add(option);
        jmb.add(about);
        jmb.add(la);
        file.add(open);
        file.add(save);
        file.add(exit);
        edit.add(copy);
        edit.add(cut);
        edit.add(paste);
        edit.add(delete);
        option.add(italic);
        option.add(bold);
        about.add(version);
        about.add(help);
        open.addActionListener(new ListenActionForJfilechooser());
        save.addActionListener(new ListenActionForJfilechooser());
        exit.addActionListener(new exitListener());
        copy.addActionListener(new copyListener());
        cut.addActionListener(new cutListener());
        paste.addActionListener(new pasteListener());
        delete.addActionListener(new deleteListener());
        italic.addActionListener(new italicListener());
        bold.addActionListener(new boldListener());
        version.addActionListener(new showversion());
        ta.addCaretListener(new taListener());
        ta.setFont(f);
    }

    class boldListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            Font f = new Font("TimesRoman", Font.BOLD, 16);
            ta.setFont(f);
        }
    }

    class italicListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            Font f = new Font("TimesRoman", Font.ITALIC, 16);
            ta.setFont(f);
        }
    }

    class deleteListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            Font f = new Font("TimesRoman", Font.PLAIN, 16);
            ta.setText(null);
            ta.setFont(f);
        }
    }

    class cutListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {

            String s1 = new String();
            selected = selectedString();
            s1 = ta.getText();
            int length = s1.length();
            if (dot < mark) {
                ta.setText(s1.substring(0, dot) + s1.substring(mark, length));
            } else {
                ta.setText(s1.substring(0, mark) + s1.substring(dot, length));
            }
        }
    }

    class pasteListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            ta.paste();
        }
    }

    class taListener implements CaretListener {
        public void caretUpdate(CaretEvent e) {
            dot = e.getDot(); // 取得光标开始位置
            mark = e.getMark();// 取得光标结束位置
        }
    }

    class copyListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            selected = selectedString();
        }
    }

    class exitListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }

    class ListenActionForJfilechooser implements ActionListener {
        int result;

        File file;

        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            if (e.getSource() == open) {
                int state = chooser.showOpenDialog(null);
                file = chooser.getSelectedFile();
                if (file != null && state == JFileChooser.APPROVE_OPTION) {
                    try {
                        filestream = new FileInputStream(file);
                        la.setText("打开的文件是:" + file.getName());
                    } catch (Exception e1) {
                        // TODO 自动生成 catch 块
                        e1.printStackTrace();
                    }
                    try {

                        ta.read(filestream, this);
                    } catch (Exception e1) {

                        e1.printStackTrace();
                    }
                }
            }
            if (e.getSource() == save) {
                result = chooser.showSaveDialog(ta);
                file = null;
                if (result == JFileChooser.APPROVE_OPTION) {
                    file = chooser.getSelectedFile();
                    la.setText("存储文件名为:" + file.getName());
                } else if (result == JFileChooser.CANCEL_OPTION) {
                    la.setText("您没有选择任何文件");
                }

                FileOutputStream fileOutStream = null;

                if (file != null) {
                    try {
                        fileOutStream = new FileOutputStream(file);
                    } catch (FileNotFoundException fe) {
                        la.setText("File Not Found");
                        return;
                    }

                    String content = ta.getText();

                    try {
                        fileOutStream.write(content.getBytes());
                    } catch (IOException ioe) {
                        la.setText("写入文件错误");
                    } finally {
                        try {
                            if (fileOutStream != null)
                                fileOutStream.close();
                        } catch (IOException ioe2) {
                        }
                    }
                }
            }

        }
    }

    class showversion implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            exitversion.setVisible(true);
        }
    }

    class myversion extends Frame {

        Label l1 = new Label("Author:  ChangTiger ");

        Label l2 = new Label("Version 0.1");

        Label l3 = new Label("2007.11.6");

        Label l4 = new Label("Tel:13576947833");

        myversion() {
            this.setLayout(new FlowLayout(FlowLayout.CENTER, 50, 20));

            this.add(l1);
            this.add(l2);
            this.add(l3);
            this.add(l4);

            this.setBounds(200, 180, 300, 200);

            this.addWindowListener(new myWindowListener());

        }
    }

    class myWindowListener extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            exitversion.setVisible(false);
        }
    }

    String selectedString() {
        String s = new String();
        s = ta.getText();
        if (dot < mark) {
            s = s.substring(dot, mark);
        } else {
            s = s.substring(mark, dot);
        }
        return s;
    }

    public static void main(String[] args) {
        Frame1 frame1 = new Frame1();
        frame1.setSize(500, 400);
        frame1.setVisible(true);
    }
}