使用Java制作一个简单的记事本

网友投稿 209 2023-08-04


使用Java制作一个简单的记事本

通过使用java的Swing、IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后在Swing组件中编辑记事本内容,然后同菜单的保存选项将编辑后的内容保存到text文件中。代码如下:

复制代码 代码如下:

import java.io.*;

import java.nio.*;

import java.nio.channels.*;

import java.nio.charset.*;

import java.awt.*;

import java.awt.event.*;

import javax.swing.JOptionPane;

/**

*功能:简单记事本

*2011-12-25

*/

public class SimpleNotepad implements ActionListener{

    private Frame frame;

    private FileDialog fd_load;

    private FileDialog fd_save;

    private TextArea ta;

    private String file = "";

    private MenuItem save;

    private RandomAccessFile raf;

    private FileChannel fci;

    private FileLock flock;

    private CharsetEncoder encoder;

    private CharsetDecoder decoder;

    public static void main( String args[]) {

        new SimpleNotepad().init();

    }

    public void init(){

        frame = new Frame("My Notepad");

        MenuBar mb = new MenuBar();

        Menu file = new Menu("文件");

        Menu help = nemhQcjDqtCw Menu("帮助");

        MenuItem open = new MenuItem("打开");

        save = new MenuItem("保存");

        save.setEnabled(false);

        file.add(open);

        file.add(save);

        mb.add(file);

        mb.add(help);     

        frame.setMenuBar(mb);

        ta = new TextArea();

        frame.add(ta,"Center");   

        open.addActionListener(this);

        save.addActionListener(this);

        frame.addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            } 

        }); 

        frame.setSize(600,400);

        frame.setLocation(300,100);

        frame.setVisible( true);     

        fd_load = new FileDialog(frame,"打开文件",FileDialog.LOAD);

        fd_save = new FileDialog(frame,"保存文件",FileDialog.SAVE);

        Charset charset = Charset.forName(System.getProperty("file.encoding"));

        encoder = charset.newEncoder();

        decoder = charset.newDecoder();

    }

    public void actionPerformed(ActionEvent e){

        String s = e.getActionCommand();

        if(s.equals("打开")){

            fd_load.setVisible(true);

            String d = fd_load.getDirectory();

            String f = fd_load.getFile();

            if((d != null) && (f != null)){

                String destfile = d + f;

                if(destfile.equals(file)){

                    return;

                }else{

                    this.closeFile();

                    file = destfile;

                    this.loadFile();

                } 

            }

        }else ihttp://f(s.equals("保存")){

            this.saveFile();

        }

    } 

    public void loadFile(){

        try{

            raf = new RandomAccessFile(file,"rw");

            fci = raf.getChannel();

            flock = fci.tryLock();

            if(flock == null){

                ta.setText("");

                JOptionPane.showMessageDialog(null,

                    "文件正在使用中,无法以独占的方式打开!",

                    "错误提示", JOptionPane.ERROR_MESSAGE);  

                file = "";

   &nbhttp://sp;            raf.close();

                raf = null;

            }else{

                int length = (int)fci.size();

                ByteBuffer bb = ByteBuffer.allocate(length);

                fci.read(bb);

                bb.flip();

                CharBuffer cb = decoder.decode(bb);

                ta.setText(cb.toString());

                frame.setTitle("My Notepad - " + file);

                save.setEnabled(true);

            }

        }catch(IOException e){

            e.printStackTrace();  

        }

    }

    public void saveFile(){

        String content = ta.getText();

        try{

            CharBuffer cb = CharBuffer.wrap(content.toCharArray());

            ByteBuffer bb = encoder.encode(cb);

            raf.setLength(0);

            fci.write(bb);

            fci.force(true);

        }catch(IOException e){

            e.printStackTrace();  

        }

    }

    public void closeFile(){

        try{

        &nbhttp://sp;   if(flock != null){

                flock.release();

            }

            if(raf != null){

                raf.close();  

            }

            file = "";

            frame.setTitle("My Notepad");

            save.setEnabled(false);

        }catch(IOException e){

            e.printStackTrace();  

        } 

    } 

}

效果图:

以上就是本文的全部内容了,希望大家能够喜欢。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深入分析Cookie的安全性问题
下一篇:EasyUI中实现form表单提交的示例分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~