JAVA mini 記事本

這是第一次發佈博客,主要是試試CSDN博客的功能!發現貼代碼的功能還是方便美觀的。
代碼爲用JAVA編寫的簡易版的記事本。包含下拉菜單功能,菜單欄爲打開,保存,退出。可實現記事本的基本操作。

package Note;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

/*
1.畫界面
2.做菜單
3.加功能
4.用io流讀寫
5.打包
*/

class NoteGUI
{
    Frame frame = null;
    TextArea textArea = null;
    MenuBar fileBar = null;
    Menu file = null;
    MenuItem open = null;
    MenuItem save = null;
    MenuItem exit = null;
    File f = null;

    NoteGUI()
    {
        init();
    }

    public void init()
    {
        frame = new Frame("Note"); 
        textArea = new TextArea();
        fileBar = new MenuBar();
        file = new Menu("文件");
        open = new MenuItem("打開");
        save = new MenuItem("保存");
        exit = new MenuItem("退出");


        frame.setBounds(400,300,800,600);


        file.add(open); 
        file.add(save);
        file.add(exit);

        fileBar.add(file);


        frame.add(textArea);
        frame.setMenuBar(fileBar);

        event();
        frame.setVisible(true);

    }

    public void event()
    {
        frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                System.exit(0);
            }
        }) ;

        open.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                openAction();
            }
        });

        save.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {       
                saveAction();
            }
        });


        exit.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                frame.dispose();
            }
        });

        textArea.addKeyListener(new KeyAdapter()
        {
            public void keyPressed(KeyEvent ke)
            {
                if(ke.isControlDown() && ke.getKeyCode() == ke.VK_S)
                {       
                    saveAction();
                }

                if(ke.getKeyCode() == ke.VK_F1 || (ke.isControlDown() && ke.getKeyCode() == ke.VK_O))
                {
                    openAction();
                }
            }
        });
    }

    private void saveAction()
    {
        if(f == null)
        {
            FileDialog fileDialogSave = new FileDialog(frame,"保存文件",FileDialog.SAVE);

            fileDialogSave.setVisible(true);

            String dirPath = fileDialogSave.getDirectory();
            String fileName = fileDialogSave.getFile();
            if(dirPath==null && fileName==null)
            {
                return;
            }
            f = new File(dirPath,fileName);     
        }

        try
        {
            FileWriter fr = new FileWriter(f);
            String s = textArea.getText();
            fr.write(s);
            fr.close();
        }
        catch (IOException ioe)
        {
            System.out.println("保存異常");
            throw new RuntimeException();
        }
    }

    public void openAction()
    {
        FileDialog fileDialogOpen = new FileDialog(frame,"打開文件",FileDialog.LOAD);
        fileDialogOpen.setVisible(true);
        String dirPath = fileDialogOpen.getDirectory();
        String fileName= fileDialogOpen.getFile();

        if(dirPath==null && fileName==null)
        {
            return;
        }

        File f = new File(dirPath,fileName);
        textArea.setText("");

        try
        {
            BufferedReader bufr = new BufferedReader(new FileReader(f));

            String line = null;
            while((line=bufr.readLine())!=null)
            {
                textArea.append(line+"\r\n");
            }

            bufr.close();
        }
        catch (IOException ioe)
        {
            System.out.println("打開異常");
            throw new RuntimeException();
        }


    }

}
class Note
{
    public static void main(String[] args) 
    {
        new NoteGUI();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章