简易文本编辑器

要求:

提供文件打开,保存及另存为三个功能按钮,并能将打开的文件显示再文本区域中,用户可以编辑文件内容


import java.awt.Button;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.channels.NonWritableChannelException;

public class FileEditor extends WindowAdapter implements ActionListener, TextListener {

    Frame f;
    TextArea ta1;
    Panel p1;
    TextField tf1;
    Button b1, b2, b3;
    FileDialog fd;
    File file1 = null;

    public static void main(String[] args) {
        (new FileEditor()).display();
    }

    public void display() {
        f = new Frame("简易文本编辑器");
        f.setSize(680, 400);
        f.setLocation(200, 140);
        f.setBackground(Color.blue);
        f.addWindowListener(this);
        tf1 = new TextField();
        tf1.setEnabled(false);
        tf1.setFont(new Font("Dialog", 0, 20));
        f.add(tf1, "North");
        ta1 = new TextArea();
        ta1.setFont(new Font("Dialog", 0, 20));
        f.add(ta1);
        ta1.addTextListener(this);
        p1 = new Panel();
        p1.setLayout(new FlowLayout(FlowLayout.LEFT));
        b1 = new Button("打开");
        b2 = new Button("保存");
        b3 = new Button("另存为");
        p1.add(b1);
        p1.add(b2);
        p1.add(b3);
        b2.setEnabled(false);
        b3.setEnabled(false);
        b1.addActionListener(this);
        b2.addActionListener(this);
        b3.addActionListener(this);
        f.add(p1, "South");
        f.setVisible(true);
    }// display结束
    
    // 文本编辑
    @Override
    public void textValueChanged(TextEvent e) {
        b2.setEnabled(true); // 按钮启用状态
        b3.setEnabled(true);
    }

    // 文件打开
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == b1) {
            fd = new FileDialog(f, "Open", FileDialog.LOAD);
            fd.setVisible(true);
            if ((fd.getDirectory() != null) && (fd.getFile() != null)) {
                tf1.setText(fd.getDirectory() + fd.getFile());
                try {
                    file1 = new File(fd.getDirectory(), fd.getFile());
                    FileReader fr = new FileReader(file1);
                    BufferedReader br = new BufferedReader(fr);
                    String aline;
                    while ((aline = br.readLine()) != null) {
                        ta1.append(aline + "/r/n");// 其中/r/n表示回车换行
                        fr.close();
                        br.close();
                    } // try结束
                } catch (IOException ioe) {
                    System.out.println(ioe);
                }
            } // 内层if结束
        } // 外层if结束
        if ((e.getSource() == b2) || (e.getSource() == b3)) {
            if ((e.getSource() == b3) || (e.getSource() == b2) && (file1 == null)) {
                fd = new FileDialog(f, "Save", FileDialog.SAVE);
                if (file1 == null)
                    fd.setFile("Edit1.txt"); //默认文件名
                else
                    fd.setFile(file1.getName());
                fd.setVisible(true);
                if ((fd.getDirectory() != null) && (fd.getFile() != null)) {
                    tf1.setText(fd.getDirectory() + fd.getFile());
                    file1 = new File(fd.getDirectory(), fd.getFile());
                    save(file1);
                }
            } else
                save(file1);
        }
    }

    // 文件保存
    public void save(File file1) {
        try {
            FileWriter fw = new FileWriter(file1);
            fw.write(ta1.getText());
            fw.close();
            b2.setEnabled(false); // 按钮禁用状态
            b3.setEnabled(false);
        } catch (IOException ioe) {
            System.out.println(ioe);
        }
    }// 方法save结束
    
    // 窗口关闭
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
}// 主类结束
 

猜你喜欢

转载自blog.csdn.net/xxx_1_1/article/details/82823017
今日推荐