源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-04-03 10:20 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:使用Java制作一个简单的记事本
通过使用Java的Swing、IO来实现一个简单记事本,实现打开指定的text文本文件,然后将text文件的内容加载到Swing组件中,然后在Swing组件中编辑记事本内容,然后同菜单的保存选项将编辑后的内容保存到text文件中。代码如下:
[u]复制代码[/u] 代码如下:
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();           }      }  }
效果图: [img]http://files.jb51.net/file_images/article/201502/201502281523138.png[/img]   以上就是本文的全部内容了,希望大家能够喜欢。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部