【java范例1】小小记事本
【java实例1】小小记事本
今天我做了一个小小记事本 不过功能还没有很完善 希望大家提出宝贵的意见 谢谢 编程要点如下
(1) 有关FileDialog类如下
FileDialog(this,”Open File”,FileDialog.LOAD)打开模式
FileDialog(this,”Save File As”,FileDialog.SAVE)保存模式
getDirectory()获取文件的路径
getFile() 获取所选文件的文件名
(2) 有关TextArea的方法如下
selectAll()全选
getSelectionStart()获取所选字符串的起始位置
getSelectionEnd()获取所选字符串的终点位置
replaceRange(String s,int start,int end )用String指定的内容替换start和end 范围的内容
(3)有关剪贴板的类如下
Clipboard类 用Clipboard clipboard=toolkit.getSystemClipboard()获取系统剪贴板
Transferable接口 可传输对象接口,只有实现该接口的对象才能放到剪贴板中去
StringSelection类 实现Transferable接口 可放入剪贴板中,用来传输文本数据
DataFlavor类 分析剪贴板中的数据类型,如DataFlavor.stringFlavor表示Unicode的字符数据,DataFlavor.imageFlavor表示图像数据等
import java.lang.*; import java.awt.*; import java.io.*; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.*; import javax.swing.filechooser.FileNameExtensionFilter; import org.omg.CORBA.PUBLIC_MEMBER; public class EditorFrame extends Frame implements ActionListener{ TextArea textArea =new TextArea();//用来编辑的文本区 MenuBar menuBar=new MenuBar();//菜单栏 Menu fileMenu = new Menu("File");//文件菜单 /*"文件"下拉菜单中的“新建”,“打开”,“保存”等选项*/ MenuItem newItem = new MenuItem("New"); MenuItem openItem = new MenuItem("Open"); MenuItem saveItem = new MenuItem("Save"); MenuItem saveAsItem = new MenuItem("Save As"); MenuItem exitItem = new MenuItem("Exit"); /*编辑菜单中的全选,剪切,复制,黏贴*/ Menu editMenu =new Menu("Edit"); MenuItem selectItem = new MenuItem("Select All"); MenuItem cutItem = new MenuItem("Cut"); MenuItem copyItem = new MenuItem("Copy"); MenuItem pasteItem = new MenuItem("Paste"); String fileName="NoName";//设置默认的文件名 Toolkit toolkit=Toolkit.getDefaultToolkit(); Clipboard clipBoard=toolkit.getSystemClipboard();//剪贴板对象 /*打开和保存文件对话框*/ private FileDialog openFileDialog =new FileDialog(this,"Open File",FileDialog.LOAD); private FileDialog saveAsFileDialog =new FileDialog(this,"Save File As",FileDialog.SAVE); public EditorFrame(){ setTitle("NotePad"); setFont(new Font("Times New Roman",Font.PLAIN,12)); setBackground(Color.white); setSize(400,300); fileMenu.add(newItem); fileMenu.add(openItem); fileMenu.addSeparator(); fileMenu.add(saveItem); fileMenu.add(saveAsItem); fileMenu.addSeparator(); fileMenu.add(exitItem); editMenu.add(selectItem); editMenu.addSeparator(); editMenu.add(copyItem); editMenu.add(pasteItem); menuBar.add(fileMenu); menuBar.add(editMenu); setMenuBar(menuBar); add(textArea); addWindowListener(new WindowAdapter(){//指定窗口的退出方式 public void windowClosing(WindowEvent e){ System.exit(0); } }); /*注册各个监听器*/ newItem.addActionListener(this); openItem.addActionListener(this); saveItem.addActionListener(this); saveAsItem.addActionListener(this); exitItem.addActionListener(this); selectItem.addActionListener(this); copyItem.addActionListener(this); cutItem.addActionListener(this); pasteItem.addActionListener(this); } public void actionPerformed(ActionEvent e){ Object eventSource=e.getSource();//利用事件源判断被单击的菜单项 if(eventSource==newItem){ textArea.setText("");//新建时清空文本区 }else if(eventSource==openItem){ openFileDialog.show();//显示打开对话框 fileName=openFileDialog.getDirectory()+openFileDialog.getFile(); if(fileName !=null) readFile(fileName); }else if(eventSource==saveItem){ if(fileName !=null) writeFile(fileName); }else if(eventSource==saveAsItem){ saveAsFileDialog.show(); fileName =saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile(); if(fileName !=null) writeFile(fileName); }else if(eventSource==selectItem){ textArea.selectAll(); }else if(eventSource==copyItem){ String text=textArea.getSelectedText(); StringSelection selection=new StringSelection(text); clipBoard.setContents(selection, null); }else if(eventSource==pasteItem){ Transferable contents=clipBoard.getContents(this); if(contents==null) return; String text; text=""; try{ text=(String)contents.getTransferData(DataFlavor.stringFlavor); }catch (Exception exception) { } textArea.replaceRange(text, textArea.getSelectionStart(), textArea.getSelectionEnd()); }else if(eventSource==exitItem){ System.exit(0); } } public void readFile(String fileName){ try{ File file=new File(fileName); FileReader readIn=new FileReader(file); int size=(int)file.length(); int charsRead=0; char[] content=new char[size]; while(readIn.ready()) charsRead+=readIn.read(content,charsRead,size-charsRead); readIn.close(); textArea.setText(new String(content,0,charsRead)); } catch (IOException e) { System.out.println("Error openning file"); } } public void writeFile(String fileName){ try{ File file=new File(fileName); FileWriter writeOut=new FileWriter(file); writeOut.write(textArea.getText()); writeOut.close(); } catch (IOException e) { System.out.println("Error writing file"); } } public static void main(String[] args){ Frame frame=new EditorFrame(); frame.show(); } }
1 楼
asbdzxln118
2011-07-10
功能就是调调API,怎么把软件组织好很重要,如果我让你添加新的功能你肯定要修改源代码,这就不符合面向对象思想了
2 楼
hss118100
2011-07-10
我觉得作者的水平很不错,但是应该在此基础上多考虑考虑软件的模块化设计。如果要加新功能,你就肯定要修改源码了。
3 楼
qinweiping
2011-07-11
谢谢大家的意见 我会努力去做的