java swing awt io,使用Java的Swing、IO来实现一个简单记事本

通过使用Java的Swing、IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后在Swing组件中编辑记事本内容,然后同菜单的保存选项将编辑后的内容保存到text文件中(使用AWT实现简单记事本)。代码如下: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();

}

}

}

效果图:

a7dda3bb9e8666c18f767047bd15e51d.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值