




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主程序:import java.awt.*;import java.awt.datatransfer.*;import java.awt.event.*;import javax.print.*;import javax.print.attribute.DocAttributeSet;import javax.print.attribute.HashDocAttributeSet;import javax.print.attribute.HashPrintRequestAttributeSet;import javax.print.attribute.PrintRequestAttributeSet;import javax.print.attribute.standard.MediaSizeName;import javax.swing.*;import javax.swing.border.BevelBorder;import javax.swing.event.UndoableEditEvent;import javax.swing.event.UndoableEditListener;import javax.swing.filechooser.*;import javax.swing.filechooser.FileFilter;import javax.swing.plaf.FileChooserUI;import javax.swing.undo.UndoableEdit;import java.io.*;public class Notepad extends JFrame /* * param args */public JTextArea jta=null; /中间的文本区域private File selectedFile=null;private JFileChooser chooser=null; /文件选择器private UndoableEdit edit; /设置还原功能private boolean canUndo=false;private JMenuItem jmiUndoItem; /撤销的菜单private Clipboard clip=null; /粘贴板private JDialog jdSearchDialog;public Notepad()super(Notepad Beta);super.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);chooser=new JFileChooser();chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);clip=Toolkit.getDefaultToolkit().getSystemClipboard();jta=new JTextArea();jta.setWrapStyleWord(true);jta.setLineWrap(true);/*右键弹出功能final JPopupMenu jpMenu=new JPopupMenu();JMenuItem jpItemUndo=new JMenuItem(撤销(U) );JMenuItem jpItemCut=new JMenuItem(剪切(T) );JMenuItem jpItemCopy=new JMenuItem(复制(C) );JMenuItem jpItemPaste=new JMenuItem(粘贴(P) );jpMenu.add(jpItemUndo);jpMenu.add(new JPopupMenu.Separator();jpMenu.add(jpItemCut);jpMenu.add(jpItemCopy);jpMenu.add(jpItemPaste);jpMenu.setBorder(new BevelBorder(BevelBorder.RAISED);jta.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e)if(e.isMetaDown()if(!jpMenu.isVisible()jpMenu.show(e.getComponent(),e.getX(),e.getY();else jpMenu.setVisible(false););/*实现撤销功能jta.getDocument().addUndoableEditListener(new UndoableEditListener() Overridepublic void undoableEditHappened(UndoableEditEvent e) / TODO Auto-generated method stubedit=e.getEdit();if(edit!=null)canUndo=edit.canUndo();else canUndo=false;);/*设置相关菜单和事件监听Container content=getContentPane();JMenuBar jmb=new JMenuBar();JMenu jmFile=new JMenu(文件(F);jmFile.setMnemonic(f);JMenu jmEdit=new JMenu(编辑(E);jmEdit.setMnemonic(e);JMenu jmStyle=new JMenu(格式(O);jmStyle.setMnemonic(e);JMenu jmView=new JMenu(查看(V);jmView.setMnemonic(v);JMenu jmHelp=new JMenu(帮助(H);jmHelp.setMnemonic(h);jmb.add(jmFile);jmb.add(jmEdit);jmb.add(jmStyle);jmb.add(jmView);jmb.add(jmHelp);setJMenuBar(jmb);JMenuItem jmiNewItem=new JMenuItem(新建(N) Ctrl+N);jmiNewItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubif(!jta.getText().equals()int confirm=JOptionPane.showConfirmDialog(Notepad.this, 是否保存(S) Ctrl+S文件?);if(confirm=JOptionPane.OK_OPTION)if(selectedFile!=null)try FileWriter fw=new FileWriter(selectedFile);fw.write(jta.getText();fw.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件写入异常);jta.setText();elsejta.setText();JFileChooser jChooser=new JFileChooser();int selection=jChooser.showSaveDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try FileWriter fw=new FileWriter(selectedFile);fw.write(jta.getText();fw.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件写入异常);else if(confirm=JOptionPane.NO_OPTION)jta.setText();else else );JMenuItem jmiOpenItem=new JMenuItem(打开(O) Ctrl+O);jmiOpenItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubif(!jta.getText().equals()int confirm=JOptionPane.showConfirmDialog(Notepad.this, 是否保存(S) Ctrl+S文件?);if(confirm=JOptionPane.OK_OPTION)if(selectedFile!=null)try FileWriter fw=new FileWriter(selectedFile);fw.write(jta.getText();fw.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件写入异常);elseJFileChooser jChooser=new JFileChooser();int selection=jChooser.showSaveDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try FileWriter fw=new FileWriter(selectedFile);fw.write(jta.getText();fw.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件写入异常);else if(confirm=JOptionPane.NO_OPTION)jta.setText();JFileChooser jChooser=new JFileChooser();int selection=jChooser.showOpenDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try BufferedReader bf=new BufferedReader(new FileReader(selectedFile);String tempString=;int i;while(i=bf.read()!=-1)tempString+=String.valueOf(char)i);jta.setText(tempString);bf.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件保存(S) Ctrl+S错误);else else elseJFileChooser jChooser=new JFileChooser();int selection=jChooser.showOpenDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try BufferedReader bf=new BufferedReader(new FileReader(selectedFile);String tempString=;int i;while(i=bf.read()!=-1)tempString+=String.valueOf(char)i);jta.setText(tempString);bf.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件打开(O) Ctrl+O错误);else );JMenuItem jmiSaveItem=new JMenuItem(保存(S) Ctrl+S);jmiSaveItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubif(jta.getText().equals() elseif(selectedFile=null)JFileChooser jChooser=new JFileChooser();int selection=jChooser.showOpenDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try BufferedReader bf=new BufferedReader(new FileReader(selectedFile);String tempString=;int i;while(i=bf.read()!=-1)tempString+=String.valueOf(char)i);jta.setText(tempString);bf.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件打开(O) Ctrl+O错误);else elsetry FileWriter fw=new FileWriter(selectedFile);fw.write(jta.getText();fw.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件写入异常););JMenuItem jmiSaveTo = new JMenuItem(另存为(A).);jmiSaveTo.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubJFileChooser jChooser=new JFileChooser();int selection=jChooser.showOpenDialog(Notepad.this);if(selection=JFileChooser.APPROVE_OPTION)selectedFile=jChooser.getSelectedFile();try BufferedWriter bf=new BufferedWriter(new FileWriter(selectedFile);bf.write(jta.getText();bf.close(); catch (Exception e) / TODO: handle exceptionJOptionPane.showConfirmDialog(Notepad.this, 文件打开(O) Ctrl+O错误);else );JMenuItem jmiExitItem=new JMenuItem(退出(X);jmiExitItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubif(jta.getText().equals()System.exit(0);elseint t=JOptionPane.showConfirmDialog(Notepad.this, 确定退出(X)?);if(t=JOptionPane.OK_OPTION)System.exit(0););JMenuItem jmiPrintItem = new JMenuItem(打印(P) Ctrl+P);jmiPrintItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stub DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); aset.add(MediaSizeName.ISO_A4); PrintService pservices = PrintServiceLookup.lookupPrintServices(flavor, aset); PrintService defaultService=PrintServiceLookup.lookupDefaultPrintService(); if (pservices.length 0) PrintService service = ServiceUI.printDialog(null, 200, 200, pservices, defaultService, flavor, aset); DocPrintJob pj = service.createPrintJob(); try String fis=jta.getText(); DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das); pj.print(doc, aset); catch (PrintException e) e.printStackTrace(); );jmFile.add(jmiNewItem);jmFile.add(jmiOpenItem);jmFile.add(jmiSaveItem);jmFile.add(jmiSaveTo);jmFile.add(new JSeparator();jmFile.add(jmiPrintItem);jmFile.add(new JSeparator();jmFile.add(jmiExitItem);/*实现编辑菜单的相关item/*由于item太多,就放在一个类中实现监听(除了jmiUndoItem)jmiUndoItem = new JMenuItem(撤销(U) Ctrl+Z);jmiUndoItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubif(canUndo)jmiUndoItem.setEnabled(true);edit.undo();else jmiUndoItem.setEnabled(false););JMenuItem jmiCutItem = new JMenuItem(剪切(T) Ctrl+T);jmiCutItem.addActionListener(new EditListener();JMenuItem jmiCopyItem = new JMenuItem(复制(C) Ctrl+C);jmiCopyItem.addActionListener(new EditListener();JMenuItem jmiPasteItem = new JMenuItem(粘贴(P) Ctrl+V);jmiPasteItem.addActionListener(new EditListener();JMenuItem jmiDeleteItem = new JMenuItem(删除(L) Del);jmiDeleteItem.addActionListener(new EditListener();JMenuItem jmiSearchItem = new JMenuItem(查找(F) Ctrl+F);jmiSearchItem.addActionListener(new EditListener();JMenuItem jmiSearchNextItem = new JMenuItem(查找下一个(N) F3);jmiSearchNextItem.addActionListener(new EditListener();JMenuItem jmiReplaceItem = new JMenuItem(替换);jmiReplaceItem.addActionListener(new EditListener();JMenuItem jmiGoToItem = new JMenuItem(转到);jmiGoToItem.addActionListener(new EditListener();JMenuItem jmiSelectAllItem = new JMenuItem(全选);jmiSelectAllItem.addActionListener(new EditListener();JMenuItem jmiDateItem = new JMenuItem(日期);jmiDateItem.addActionListener(new EditListener();jmEdit.add(jmiUndoItem);jmEdit.add(new JSeparator();jmEdit.add(jmiCutItem);jmEdit.add(jmiCopyItem);jmEdit.add(jmiPasteItem);jmEdit.add(jmiDeleteItem);jmEdit.add(new JSeparator();jmEdit.add(jmiSearchItem);jmEdit.add(jmiSearchNextItem);jmEdit.add(jmiReplaceItem);jmEdit.add(jmiGoToItem);jmEdit.add(new JSeparator();jmEdit.add(jmiSelectAllItem);jmEdit.add(jmiDateItem);/*风格菜单的实现JCheckBox jcbAutoNextLine=new JCheckBox(自动换行);JMenuItem jmiFontitemItem = new JMenuItem(字体);jmStyle.add(jcbAutoNextLine);jmStyle.add(jmiFontitemItem);JMenuItem jmiViewStatusItem = new JMenuItem(查看状态栏);jmiViewStatusItem.setEnabled(false);jmView.add(jmiViewStatusItem);JMenuItem jmiAboutItem=new JMenuItem(关于);jmiAboutItem.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubnew HelpDialog(Notepad.this););/*帮助菜单jmHelp.add(jmiAboutItem);setLayout(new BorderLayout();JScrollPane jsp=new JScrollPane(jta);jsp.requestFocus(true);content.add(jsp,BorderLayout.CENTER);public static void main(String args) throws Exception/ TODO Auto-generated method stubtry UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFeel); catch (Exception e) System.out.print(Look And Feel Exception);System.exit(0);/ TODO: handle exceptionJFrame frame=new Notepad();frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)int r=JOptionPane.showConfirmDialog(null, 确认退出吗?);if(r=JOptionPane.OK_OPTION)System.exit(0););frame.setSize(1000,500);frame.setLocationRelativeTo(null);frame.setVisible(true);/*和剪贴板相关函数的实现public String getClipbordContent(Clipboard clip) throws ExceptionTransferable trans = clip.getContents(null); if(trans!=null)if(trans.isDataFlavorSupported(DataFlavor.stringFlavor)return (String)trans.getTransferData(DataFlavor.stringFlavor);else return ;else return ;public void setClipbordContent(Clipboard clip,String str) throws ExceptionTransferable trans=new StringSelection(str);clip.setContents(trans, null);/*监听编辑菜单下item的事件class EditListener implements ActionListenerprivate String tempString=;String textString=jta.getText();String searchString=;int stringLength=0;int startPos;JTextField jtField=null;Overridepublic void actionPerformed(ActionEvent e) / TODO Auto-generated method stubif(e.getActionCommand().equals(剪切(T) Ctrl+T)tempString=jta.getSelectedText();try setClipbordContent(clip, tempString); catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace();jta.replaceSelection();else if (e.getActionCommand().equals(复制(C) Ctrl+C) tempString=jta.getSelectedText();try setClipbordContent(clip, tempString); catch (Exception e2) / TODO: handle exceptione2.printStackTrace();else if (e.getActionCommand().equals(粘贴(P) Ctrl+V) try tempString=getClipbordContent(clip); catch (Exception e1) / TODO Auto-generated catch blocke1.printStackTrace();int pos=jta.getCaretPosition();jta.insert(tempString, pos);else if (e.getActionCommand().equals(删除(L) Del) jta.replaceSelection();else if (e.getActionCommand().equals(查找(F) Ctrl+F) jdSearchDialog=new JDialog(Notepad.this,查找);Container content=jdSearchDialog.getContentPane();JLabel jl=new JLabel(查找内容:);jtField=new JTextField(20);jtField.requestFocus();JButton jbt1=new JButton(查找);jbt1.addActionListener(new ActionListener() Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubsearchString=jtField.getText();stringLength=searchString.length();if(stringLength0)startPos=jta.getText().indexOf(searchString);if(startPos=0)jta.select(startPos, startPos+stringLength);else JOptionPane.showConfirmDialog(Notepad.this, 找不到+searchString+);else JOptionPane.showConfirmDialog(Notepad.this, 请输入查找内容););JPanel jp1=new JPanel(new BorderLayout(3,1);jp1.add(jl,BorderLayout
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省宣城市郎溪县2023-2024学年高一上学期期末考试历史题目及答案
- 幽默三国读后感550字(9篇)
- 售后服务流程标准化服务脚本
- 城市绿化养护项目管理合同
- 营销方案撰写指南
- 可爱的小仓鼠爱的作文(15篇)
- 时间变化的声音课件
- 通稿2003读后感9篇范文
- 诗歌修辞手法与意境构建:八年级古诗鉴赏教案
- 记一件令我感动的事感动作文(10篇)
- 广州市越秀区招聘卫生健康系统事业单位事业编制人员考试真题2024
- 低氯血症护理查房
- 虫害外包服务商管理制度
- 医疗废物监督管理课件
- 全国律师会费管理办法
- 钢材应收账款管理办法
- 乙二醇加氢精制催化剂:制备工艺、性能优化与应用前景探究
- 危险源辨识、评价及控制培训
- 延缓慢性肾脏病进展临床管理指南(2025年)解读课件
- 土地管理培训课件
- DB32∕T 4981-2024 公路水运工程平安工地建设规范
评论
0/150
提交评论