当前位置: 移动技术网 > IT编程>开发语言>Java > 使用Java制作一个简单的记事本

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

通过使用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 = new 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 if(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 = "";
                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{
            if(flock != null){
                flock.release();
            }
            if(raf != null){
                raf.close();  
            }
            file = "";
            frame.settitle("my notepad");
            save.setenabled(false);
        }catch(ioexception e){
            e.printstacktrace();  
        } 
    } 
}

效果图:

 

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网