1、Java语言写的简单文本编辑器import java.awt.*;import java.awt.event.*;import java.io.*;public class Notepad /*implements ActionListener , MouseListener , MouseMotionListener , WindowListener , ItemListener , KeyListener, TextListener */成员变量private Frame mainFrame;/主框架private MenuBar mb ; /菜单条private Menu mFile ,
2、 mEdit , mFormat , mHelp ; /菜单:文件,编辑,格式,帮助private MenuItem miNew , miOpen , miSave , miSaveAs , miExit ;/文件菜单项:新建,打开,保存,另存为,退出private MenuItem miCut , miCopy , miPaste , miDelete ;/编辑菜单项:剪切,复制,粘贴,删除private MenuItem miFont , miLowtoCapital, miCapitaltoLow ,miEncrypt , miDisencrypt;/格式菜单项:字体private Me
3、nuItem miAboutNotepad;/帮助菜单项:关于记事本private TextArea ta;/文本区private String tempString;/临时字符串,用于存储需要复制粘贴的字符串private boolean textValueChanged = false;private int id_font ;/字体 String fileName = ;/上次保存后的文件名和地址/构造函数public Notepad() /框架 mainFrame = new Frame (Notepad v0.99 by Launching); mb = new MenuBar ()
4、; ta = new TextArea (30 ,60); ta.setFont( new Font ( Times New Rome , Font.PLAIN , 15); ta.setBackground(new Color(0 , 250 , 200); /菜单条 mFile = new Menu ( File); mEdit = new Menu ( Edit); mFormat = new Menu (Format); mHelp = new Menu (Help); /文件 miNew = new MenuItem (New); miOpen = new MenuItem (Ope
5、n); miSave = new MenuItem (Save); miSaveAs = new MenuItem (Save as); miExit = new MenuItem (Exit); /编辑 miCut = new MenuItem (Cut); miCopy = new MenuItem (Copy); miPaste = new MenuItem (Paste); miDelete = new MenuItem (Delete); /格式 miFont = new MenuItem (Font); miLowtoCapital = new MenuItem(Low to Ca
6、pital); miCapitaltoLow = new MenuItem(Capital to Low); miEncrypt = new MenuItem(Encrypt); miDisencrypt = new MenuItem(Disencrypt); /帮助 miAboutNotepad = new MenuItem (About Notepad); /添加文件菜单项 mFile.add(miNew); mFile.add(miOpen); mFile.add(miSave); mFile.add(miSaveAs); mFile.add(miExit); /添加编辑菜单项 mEdi
7、t.add(miCut); mEdit.add(miCopy); mEdit.add(miPaste); mEdit.add(miDelete); /添加格式菜单项 mFormat.add(miFont); mFormat.add(miLowtoCapital); mFormat.add(miCapitaltoLow); mFormat.add(miEncrypt); mFormat.add(miDisencrypt); /添加帮助菜单项 mHelp.add(miAboutNotepad); /菜单条添加菜单 mb.add(mFile); mb.add(mEdit); mb.add(mForm
8、at); mb.add(mHelp); /框架添加菜单条 mainFrame.setMenuBar( mb ); /初始字符串赋为空 tempString = ; /添加文本区 mainFrame.add(ta, BorderLayout.CENTER); mainFrame.setSize(800 , 500); mainFrame.setLocation( 100 ,100);/ 起始位置 mainFrame.setResizable(true);/不可更改大小 mainFrame.setVisible(true); /mainFrame.pack(); /增加监视器/ /主框架 main
9、Frame.addWindowListener(new WindowAdapter () /关闭窗口 public void windowClosing(WindowEvent e) System.exit(0); ); /文本区 ta.addKeyListener( new KeyAdapter() public void KeyTyped(KeyEvent e) textValueChanged = true ; /键盘按键按下即导致文本修改 ); /文件菜单:/ /新建 miNew.addActionListener( new ActionListener() public void a
10、ctionPerformed(ActionEvent e) ta.replaceRange(, 0 , ta.getText().length() ;/清空文本区的内容 fileName = ;/文件名清空 ); /打开 miOpen.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) FileDialog d=new FileDialog(mainFrame , open file , FileDialog.LOAD );/打开文件对话框 d.addWindowListener(
11、 new WindowAdapter() /关闭文件对话框窗口 public void windowClosing(WindowEvent ee) System.exit(0); ); d.setVisible(true); File f = new File( d.getDirectory()+d.getFile() ); /建立新文件 fileName = d.getDirectory()+d.getFile();/得到文件名 char ch = new char (int)f.length();/用此文件的长度建立一个字符数组 try/异常处理 /读出数据,并存入字符数组ch中 Buff
12、eredReader bw = new BufferedReader( new FileReader(f) ); bw.read(ch); bw.close(); catch( FileNotFoundException fe ) System.out.println(file not found); System.exit(0); catch( IOException ie) System.out.println(IO error); System.exit(0); String s =new String (ch); ta.setText(s);/设置文本区为所打开文件的内容 ); /保存
13、 miSave.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) if( fileName.equals() ) /如果文件没有被保存过,即文件名为空 FileDialog d=new FileDialog(mainFrame , save file , FileDialog.SAVE );/保存文件对话框 d.addWindowListener( new WindowAdapter() /关闭文件对话框窗口 public void windowClosing(WindowEve
14、nt ee) System.exit(0); ); d.setVisible(true); String s = ta.getText();/得到所输入的文本内容 try/异常处理 File f = new File( d.getDirectory()+d.getFile();/新建文件 fileName = d.getDirectory()+d.getFile();/得到文件名 BufferedWriter bw = new BufferedWriter( new FileWriter (f);/输入到文件中 bw.write(s , 0 , s.length(); bw.close();
15、catch(FileNotFoundException fe_) System.out.println(file not found); System.exit(0); catch( IOException ie_) System.out.println( IO error); System.exit(0); else /如果文件已经保存过 String s = ta.getText();/得到所输入的文本内容 try/异常处理 File f = new File( fileName );/新建文件 BufferedWriter bw = new BufferedWriter( new Fil
16、eWriter (f);/输入到文件中 bw.write(s , 0 , s.length(); bw.close(); catch(FileNotFoundException fe_) System.out.println(file not found); System.exit(0); catch( IOException ie_) System.out.println( IO error); System.exit(0); ); /另存为 miSaveAs.addActionListener( new ActionListener() public void actionPerforme
17、d(ActionEvent e) FileDialog d=new FileDialog(mainFrame , save file , FileDialog.SAVE );/保存文件对话框 d.addWindowListener( new WindowAdapter() /关闭文件对话框窗口 public void windowClosing(WindowEvent ee) System.exit(0); ); d.setVisible(true); String s = ta.getText();/得到所输入的文本内容 try/异常处理 File f = new File( d.getDi
18、rectory()+d.getFile();/新建文件 BufferedWriter bw = new BufferedWriter( new FileWriter (f);/输入到文件中 bw.write(s , 0 , s.length(); bw.close(); catch(FileNotFoundException fe_) System.out.println(file not found); System.exit(0); catch( IOException ie_) System.out.println( IO error); System.exit(0); ); /退出 m
19、iExit.addActionListener( new ActionListener() /退出程序 public void actionPerformed(ActionEvent e) System.exit(0); ); /编辑菜单:/ /剪切 miCut.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) tempString = ta.getSelectedText(); /得到要复制的内容,暂存在tempString中 StringBuffer tmp = new St
20、ringBuffer ( ta.getText();/临时存储文本 int start = ta.getSelectionStart(); /得到要删除的字符串的起始位置 int len = ta.getSelectedText().length(); /得到要删除的字符串的长度 tmp.delete( start , start+len); /删除所选中的字符串 ta.setText(tmp.toString();/用新文本设置原文本 ); /复制 miCopy.addActionListener( new ActionListener() public void actionPerform
21、ed(ActionEvent e) tempString = ta.getSelectedText(); /得到要复制的内容,暂存在tempString中 ); /粘贴 miPaste.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) StringBuffer tmp = new StringBuffer ( ta.getText();/临时存储文本 int start = ta.getSelectionStart(); /得到要粘贴的位置 tmp.insert(start ,
22、tempString);/查入要粘贴的内容 ta.setText(tmp.toString();/用新文本设置原文本 ); /删除 miDelete.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) StringBuffer tmp = new StringBuffer ( ta.getText();/临时存储文本 int start = ta.getSelectionStart(); /得到要删除的字符串的起始位置 int len = ta.getSelectedText().
23、length(); /得到要删除的字符串的长度 tmp.delete( start , start+len); /删除所选中的字符串 ta.setText(tmp.toString();/用新文本设置原文本 ); /格式菜单:/ /字体 miFont.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) final Dialog d = new Dialog ( mainFrame , Font);/新建对话框 d.setLocation( 250 ,250);/ 起始位置 d.se
24、tLayout( new BorderLayout();/表格布局 /上部分面板 Label l_font = new Label (font);/font标签 Panel p_1 = new Panel(); p_1.add(l_font); p_1.setVisible(true); /中部分面板 List font_list = new List (6 , false);/字体列表 /添加字体项目 font_list.add(Plain);/普通字体 font_list.add(Bold); /粗体 font_list.add(Italic);/斜体 font_list.addItemL
25、istener( new MyItemListener_font() ); /字体增加监视器 Panel p_2 = new Panel(); p_2.add(font_list); p_2.setVisible(true); /下部分面板 Button ok = new Button (OK); ok.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) d.dispose(); ); ok.setSize( new Dimension (20 , 5) ); Panel p_3
26、= new Panel();/下部分面板 p_3.add(ok); p_3.setVisible(true); /添加三个面板 d.add(p_1 , BorderLayout.NORTH); d.add(p_2 , BorderLayout.CENTER); d.add(p_3 , BorderLayout.SOUTH); d.pack(); d.addWindowListener( new WindowAdapter() /关闭对话框窗口 public void windowClosing(WindowEvent ee) d.dispose(); ); d.setVisible(true)
27、; ); /小写字母转大写 miLowtoCapital.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) String s = ta.getText();/得到所输入的文本内容 StringBuffer temp = new StringBuffer(); for(int i = 0 ; i=97 & (int)s.charAt(i)=122 ) temp.append(char)(int)s.charAt(i)-32); else temp.append(s.charAt(i); s = new String(temp); ta.setText(s); ); /大写字母转小写 miCapitaltoLow.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) String s = ta.getText();/得到所输入的文本内容 StringBuffer temp = new StringBuffer(); for(int i = 0 ;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2