java编程-记事本-全部功能都实现.doc_第1页
java编程-记事本-全部功能都实现.doc_第2页
java编程-记事本-全部功能都实现.doc_第3页
java编程-记事本-全部功能都实现.doc_第4页
java编程-记事本-全部功能都实现.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

两个放到同个包中,一起运行1.记事本.javaimport javax.swing.text.BadLocationException;public class 记事本 public static void main(String args) Window window1=new Window(); window1.setTitle(记事本); window1.setVisible(true); 2. Window.javaimport javax.swing.*;import javax.swing.JOptionPane;import java.io.*;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Component;import java.awt.Font;import java.awt.Frame;import java.awt.GraphicsEnvironment;import java.awt.event.*;import java.awt.*;import java.awt.print.*; import java.util.*;import java.lang.Object;import java.lang.Throwable;import java.lang.Exception;import javax.swing.text.BadLocationException;import javax.swing.JFileChooser;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import javax.swing.filechooser.FileNameExtensionFilter;public class Window extends JFrame implements ActionListenerJMenuBar menubar;JMenu menu,menu1,menu2,itemLine,menu3,menu4;JSplitPane splitPane;JMenuItem itemNew,itemOpen,itemSave,itemSaveAs,itemPrint,itemExit;JMenuItem itemCopy,itemCut,itemPaste,itemDelete;JMenuItem itemFont,line1,line2,itemhelp,itemabout;JTextArea text,text1;JLabel lblStatus;JTextField field;KeyHandler kHandler=new KeyHandler();JPopupMenu popupMenu;JToolBar statusBar;JCheckBoxMenuItem itemstate;Window()init();intGUI();setBounds(500,150,500,500);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);void intGUI()text=new JTextArea();add(new JScrollPane(text),BorderLayout.CENTER);text.addKeyListener(kHandler);lblStatus=new JLabel(未修改);void init() /建立一个菜单menubar=new JMenuBar(); /建立文件菜单项menu=new JMenu(文件(F);menubar.add(menu);setJMenuBar(menubar);itemNew=new JMenuItem(新建); itemOpen=new JMenuItem(打开);itemSave=new JMenuItem(保存);itemSaveAs=new JMenuItem(另存为);itemPrint=new JMenuItem(打印 );itemExit=new JMenuItem(退出);menu.add(itemNew);menu.add(itemOpen);menu.add(itemSave);menu.add(itemSaveAs);menu.add(itemPrint);menu.add(itemExit);itemNew.addActionListener(this);itemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK);itemOpen.addActionListener(this);itemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);itemSave.addActionListener(this);itemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK);itemSaveAs.addActionListener(this);itemPrint.addActionListener(this);itemPrint.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK);itemExit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(lblStatus.getText().equals(已修改) int confirm=JOptionPane.showConfirmDialog(null, 文件已修改,要保存吗?);if(confirm=JOptionPane.OK_OPTION)save();else if(confirm=JOptionPane.CANCEL_OPTION)return;else if(confirm=JOptionPane.CLOSED_OPTION)return; System.exit(0); );itemExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK);menu1=new JMenu(编辑(E); /建立编辑菜单项menubar.add(menu1);setJMenuBar(menubar);itemCopy=new JMenuItem(复制); itemCut=new JMenuItem(剪切);itemPaste=new JMenuItem(粘贴);itemDelete=new JMenuItem(删除);menu1.add(itemCopy);menu1.add(itemCut);menu1.add(itemPaste);menu1.add(itemDelete);itemCopy.addActionListener(this);itemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK);itemCut.addActionListener(this);itemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK);itemPaste.addActionListener(this);itemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK);itemDelete.addActionListener(this);itemDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0);menu2=new JMenu(格式(O); /建立格式菜单项menubar.add(menu2);setJMenuBar(menubar); itemLine=new JMenu(自动换行); /建立二级菜单项 line1=new JMenuItem(选择自动换行); line2=new JMenuItem(取消自动换行); itemLine.add(line1); itemLine.add(line2); menu2.add(itemLine); line1.addActionListener(this); line2.addActionListener(this); itemFont=new JMenuItem(字体); menu2.add(itemFont); itemFont.addActionListener(this); menu3=new JMenu(查看(V); /建立查看菜单项menubar.add(menu3);setJMenuBar(menubar);itemstate=new JCheckBoxMenuItem(状态栏); /设置选勾菜单项menu3.add(itemstate);itemstate.addActionListener(this); menu4=new JMenu(帮助(H); /建立帮助菜单项menubar.add(menu4);setJMenuBar(menubar);itemhelp=new JMenuItem(查看帮助); menu4.add(itemhelp);itemhelp.addActionListener(this);itemabout=new JMenuItem(关于记事本); menu4.add(itemabout);itemabout.addActionListener(this);public void actionPerformed(ActionEvent e) /选择if(e.getSource()=itemCopy)text.copy();else if(e.getSource()=itemCut)text.cut();else if(e.getSource()=itemPaste)text.paste();else if(e.getSource()=itemNew)inew();else if(e.getSource()=itemSave)save();else if(e.getSource()=itemOpen)open();else if(e.getSource()=itemSaveAs)saveas();else if(e.getSource()=itemPrint)print();else if(e.getSource()=itemDelete)delete();else if(e.getSource()=line1)text.setLineWrap(true); /激活自动换行功能else if(e.getSource()=line2)text.setLineWrap(false);else if(e.getSource()=itemFont)font();else if(e.getSource()=itemstate) if(itemstate.getState() state(); else statusBar.setVisible(false); /状态栏不可见 else if(e.getSource()=itemhelp)itemhelp();else if(e.getSource()=itemabout)itemabout(); void itemhelp()String message = 1.记事本软件界面很简洁,使用方法简单,但是也仅拥有着基本文字编辑的功能。n不能对文字进行排版和样式编辑。+n2.软件最上方的是标题栏,下面的是菜单栏(点击不同按钮会出现不同的下拉菜单),中间白色空n白区域为编辑区域,下方的是状态栏,右边是滚动条。 + n3.下拉菜单说明:+ n(1)文件+ n新建:新建一个空白的文档。如果正在编辑中的文档被修改过,会提醒是否保存。+ n打开:打开一个已知的文本文档。如果正在编辑中的文档被修改过,会提醒是否保存。+ n保存:保存现在编辑中的文档。如果没有保存过会提示保存的位置,如果保存过则会自动覆写上已经保存的文件。+ n另存为:将现在编辑中的文件存到别的地方。如果文件保存过则需要保存到别的地方或者改名保n存到同一位置,如果文件没有保存过则功能同 保存。+ n打印:将现在编辑中的文件输出到打印终端进行打印。+ n退出:退出记事本软件+ n(2)编辑+ n剪切:将选中的文字剪贴到剪贴板中+ n复制:将选中的文字复制到剪贴板中+ n粘贴:将剪贴板中的文字粘贴到记事本的光标处+ n删除:删除选中的文字。撤销:撤销上一步操作+ n(3)格式+ n自动换行:当文字到达最右边的时候,自动切换到下一行+ n字体:文字的显示设置,可设置 字体、字形、大小,并提供预览+ n(4)查看+ n状态栏:当前光标的所在的行数列数,显示时间以及文字总数,需要重点击状态栏才显示最新消息; JOptionPane.showMessageDialog(this,message,查看帮助,JOptionPane.PLAIN_MESSAGE); void itemabout() String message = n名称:vivian记事本 +n版本:1.0n作者:mengmeng + nn感谢您的使用n /mengsifen ; JOptionPane.showMessageDialog(this,message,关于记事本,JOptionPane.PLAIN_MESSAGE);JLabel statusLabel1,statusLabel2,statusLabel3;JMenuBar MenuBar=new JMenuBar(); Container container=getContentPane();void state()GregorianCalendar time=new GregorianCalendar();int hour=time.get(Calendar.HOUR_OF_DAY);int min=time.get(Calendar.MINUTE);int second=time.get(Calendar.SECOND);statusBar=new JToolBar();int curLn=1; /设置行数列数 int curCol=1; int caretPos = this.text.getCaretPosition(); int curSel = 0; try / 获取指定偏移量处的行号,返回行号的取值范围:x=0 & x=0 & x 0) / 当打印内容不为空时 / PAGES = getPagesCount(printStr); / 获取打印总页数 PrinterJob myPrtJob = PrinterJob.getPrinterJob(); / 获取默认打印作业 PageFormat pageFormat = myPrtJob.defaultPage(); / 获取默认打印页面格式 /myPrtJob.setPrintable(this, pageFormat); / 设置打印工作 if (myPrtJob.printDialog() / 显示打印对话框 try myPrtJob.print(); / 进行每一页的具体打印操作 catch(PrinterException pe) pe.printStackTrace(); else / 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog (null, 对不起,文本为空,打印取消!, Empty, JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); void save() /实现保存功能PrintWriter w=null;FileNameExtensionFilter filter=new FileNameExtensionFilter(*.txt, txt);JFileChooser Chooser=new JFileChooser();Chooser.setFileFilter(filter);if(lblStatus.getText().equals(已修改)Chooser.setSelectedFile(new File(getName();int result=Chooser.showSaveDialog(null);if (result=JFileChooser.APPROVE_OPTION) File file=Chooser.getSelectedFile();System.out.println(file.getPath();if (!file.getName().endsWith(.txt) file=new File(file.getPath()+.txt);System.out.println(file.getPath();tryw=new PrintWriter(new BufferedWriter(new FileWriter(file);String ss=text.getText().split(n);for(String st:ss)w.println(st);catch(FileNotFoundException e)e.printStackTrace();catch(IOException e)e.printStackTrace();finallyw.close();void open() /实现打开功能inew();FileNameExtensionFilter filter=new FileNameExtensionFilter(*.txt, txt);JFileChooser chooser=new JFileChooser();chooser.setFileFilter(filter);int s=chooser.showOpenDialog(null);String str=;if(s=JFileChooser.APPROVE_OPTION)File file=chooser.getSelectedFile();BufferedReader r=null;file.getName().endsWith(.txt);tryr=new BufferedReader(new FileReader(file);while(true)str=r.readLine();if(str=null)break; text.append(str+n);catch(FileNotFoundException e)e.printStackTrace();catch(IOException e)e.printStackTrace();finallytryr.close();catch(IOException e)e.printStackTrace();Window.this.setTitle(file.getName();void saveas() /实现另存为功能PrintWriter w=null;FileNameExtensionFilter filter=new FileNameExtensionFilter(*.txt, txt);JFileChooser Chooser=new JFileChooser();Chooser.setFileFilter(filter);int result=Chooser.showSaveDialog(null); if (result=JFileChooser.APPROVE_OPTION) File file=Chooser.getSelectedFile();System.out.println(file.getPath();if (!file.getName().endsWith(.txt) file=new File(file.getPath()+.txt);System.out.println(file.getPa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论