使用Java制作一个简单的记事本
使用Java制作一个简单的记事本
发布时间:2016-12-28 来源:查字典编辑
摘要:通过使用Java的Swing、IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后...

通过使用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();

}

}

}

效果图:

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

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类