day22-13-GUI(练习-保存文件)

2021-03-26  本文已影响0人  姗婷
import java.awt.*;
import java.awt.event.*;
import java.io.*;

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

    MyMenuDemo()
    {
        init();
    }

    private Frame f;
    private MenuBar mb;
    private Menu m;
    private MenuItem mi,opernItem,saveItem;
    private FileDialog openDig,saveDig;
    private TextArea ta;
    private File file;

    public void init()
    {
        f = new Frame("i am a Frame");
        mb = new MenuBar();
        m = new Menu("文件");
        mi = new MenuItem("exit");
        opernItem =new MenuItem("打开");
        saveItem = new MenuItem("保存");
        ta = new TextArea();


        m.add(mi);
        m.add(opernItem);
        m.add(saveItem);
        mb.add(m);

        //不写模式默认也是load
        openDig= new FileDialog(f,"我要打开",FileDialog.LOAD);
        saveDig = new FileDialog(f,"我要保存",FileDialog.SAVE);


        f.setBounds(200,300,600,500);
        //不设置默认是边界布局
        // f.setLayout(new FlowLayout());
        f.setMenuBar(mb);
        f.add(ta);
        myEvent();
        f.setVisible(true);

    }

    public void myEvent()
    {


        saveItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                //是否弹出对话框,如果文件存在就弹出,存在就不弹直接保存
                if(file ==null)
                {
                    saveDig.setVisible(true);
                    String dirPath = saveDig.getDirectory();
                    String fileName = saveDig.getFile();
                    //如果是点击取消就不获取路径及文件名
                    if (dirPath == null || fileName == null) {
                        return;
                    }
                    //把文件提供到成员变量上来
                    file = new File(dirPath, fileName);
                }
                //源是文本区域中的数据写到文件里面进去,这时候就是目的
                try
                {
                    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                    String text = ta.getText();
                    bw.write(text);
                    bw.flush();
                    bw.close();

                }catch(IOException ex)
                {
                    throw new RuntimeException("写入失败");
                }
            }
        });

        //点击打开,就弹出我要打开窗口
        opernItem.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                openDig.setVisible(true);
                //选择哪个文件,FileDialog
                String dirpath = openDig.getDirectory();
                String filepath = openDig.getFile();
                System.out.println(dirpath+"..."+filepath);
//                如果没有选择,就会报空指针,没有文件
                if(dirpath==null || filepath==null)
                {
                    return;
                }
                //如果没有清空,就会一直添加,我们就选择了就清空
                ta.setText("");
                file = new File(dirpath,filepath);
                try
                {
                    BufferedReader br = new BufferedReader(new FileReader(file));
                    String s = null;
                    while ((s =br.readLine())!=null)
                    {
                        ta.append(s+"\n\t");
                    }

                }
                catch (IOException ex)
                {
                    throw new RuntimeException("读取失败");
                }

            }
        });

        f.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e)
            {
                System.exit(0);
            }
        });

        mi.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e)
            {
                System.exit(0);
            }
        });
    }

}
上一篇 下一篇

猜你喜欢

热点阅读