應用Java制造一個簡略的記事本。本站提示廣大學習愛好者:(應用Java制造一個簡略的記事本)文章只能為提供參考,不一定能成為您想要的結果。以下是應用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 = 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();
}
}
}
後果圖:
以上就是本文的全體內容了,願望年夜家可以或許愛好。