今天给你们介绍一下关于如何用Java实现记事本功能,是学习Java swing的一个很是好的案例,下面先看一下运行结果(下载地址在最下面):java
下面咱们来看源码:app
- import java.awt.*;
- import java.awt.event.*;
- import java.text.*;
- import java.util.*;
- import java.io.*;
- import javax.swing.undo.*;
- import javax.swing.border.*;
- import javax.swing.*;
- import javax.swing.text.*;
- import javax.swing.event.*;
- import java.awt.datatransfer.*;
-
-
- public class Notepad extends JFrame implements ActionListener,DocumentListener
- {
- JMenu fileMenu,editMenu,formatMenu,viewMenu,helpMenu;
-
- JPopupMenu popupMenu;
- JMenuItem popupMenu_Undo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll;
-
- JMenuItem fileMenu_New,fileMenu_Open,fileMenu_Save,fileMenu_SaveAs,fileMenu_PageSetUp,fileMenu_Print,fileMenu_Exit;
-
- JMenuItem editMenu_Undo,editMenu_Cut,editMenu_Copy,editMenu_Paste,editMenu_Delete,editMenu_Find,editMenu_FindNext,editMenu_Replace,editMenu_GoTo,editMenu_SelectAll,editMenu_TimeDate;
-
- JCheckBoxMenuItem formatMenu_LineWrap;
- JMenuItem formatMenu_Font;
-
- JCheckBoxMenuItem viewMenu_Status;
-
- JMenuItem helpMenu_HelpTopics,helpMenu_AboutNotepad;
-
- JTextArea editArea;
-
- JLabel statusLabel;
-
- Toolkit toolkit=Toolkit.getDefaultToolkit();
- Clipboard clipBoard=toolkit.getSystemClipboard();
-
- protected UndoManager undo=new UndoManager();
- protected UndoableEditListener undoHandler=new UndoHandler();
-
- String oldValue;
- boolean isNewFile=true;
- File currentFile;
-
- public Notepad()
- {
- super("Java记事本");
-
- Font font = new Font("Dialog", Font.PLAIN, 12);
- java.util.Enumeration keys = UIManager.getDefaults().keys();
- while (keys.hasMoreElements()) {
- Object key = keys.nextElement();
- Object value = UIManager.get(key);
- if (value instanceof javax.swing.plaf.FontUIResource) {
- UIManager.put(key, font);
- }
- }
-
- JMenuBar menuBar=new JMenuBar();
-
- fileMenu=new JMenu("文件(F)");
- fileMenu.setMnemonic('F');
-
- fileMenu_New=new JMenuItem("新建(N)");
- fileMenu_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
- fileMenu_New.addActionListener(this);
-
- fileMenu_Open=new JMenuItem("打开(O)...");
- fileMenu_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
- fileMenu_Open.addActionListener(this);
-
- fileMenu_Save=new JMenuItem("保存(S)");
- fileMenu_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
- fileMenu_Save.addActionListener(this);
-
- fileMenu_SaveAs=new JMenuItem("另存为(A)...");
- fileMenu_SaveAs.addActionListener(this);
-
- fileMenu_PageSetUp=new JMenuItem("页面设置(U)...");
- fileMenu_PageSetUp.addActionListener(this);
-
- fileMenu_Print=new JMenuItem("打印(P)...");
- fileMenu_Print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));
- fileMenu_Print.addActionListener(this);
-
- fileMenu_Exit=new JMenuItem("退出(X)");
- fileMenu_Exit.addActionListener(this);
-
-
- editMenu=new JMenu("编辑(E)");
- editMenu.setMnemonic('E');
-
- editMenu.addMenuListener(new MenuListener()
- { public void menuCanceled(MenuEvent e)
- { checkMenuItemEnabled();
- }
- public void menuDeselected(MenuEvent e)
- { checkMenuItemEnabled();
- }
- public void menuSelected(MenuEvent e)
- { checkMenuItemEnabled();
- }
- });
-
- editMenu_Undo=new JMenuItem("撤销(U)");
- editMenu_Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
- editMenu_Undo.addActionListener(this);
- editMenu_Undo.setEnabled(false);
-
- editMenu_Cut=new JMenuItem("剪切(T)");
- editMenu_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
- editMenu_Cut.addActionListener(this);
-
- editMenu_Copy=new JMenuItem("复制(C)");
- editMenu_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
- editMenu_Copy.addActionListener(this);
-
- editMenu_Paste=new JMenuItem("粘贴(P)");
- editMenu_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
- editMenu_Paste.addActionListener(this);
-
- editMenu_Delete=new JMenuItem("删除(D)");
- editMenu_Delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
- editMenu_Delete.addActionListener(this);
-
- editMenu_Find=new JMenuItem("查找(F)...");
- editMenu_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
- editMenu_Find.addActionListener(this);
-
- editMenu_FindNext=new JMenuItem("查找下一个(N)");
- editMenu_FindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
- editMenu_FindNext.addActionListener(this);
-
- editMenu_Replace = new JMenuItem("替换(R)...",'R');
- editMenu_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));
- editMenu_Replace.addActionListener(this);
-
- editMenu_GoTo = new JMenuItem("转到(G)...",'G');
- editMenu_GoTo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK));
- editMenu_GoTo.addActionListener(this);
-
- editMenu_SelectAll = new JMenuItem("全选",'A');
- editMenu_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
- editMenu_SelectAll.addActionListener(this);
-
- editMenu_TimeDate = new JMenuItem("时间/日期(D)",'D');
- editMenu_TimeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
- editMenu_TimeDate.addActionListener(this);
-
-
- formatMenu=new JMenu("格式(O)");
- formatMenu.setMnemonic('O');
-
- formatMenu_LineWrap=new JCheckBoxMenuItem("自动换行(W)");
- formatMenu_LineWrap.setMnemonic('W');
- formatMenu_LineWrap.setState(true);
- formatMenu_LineWrap.addActionListener(this);
-
- formatMenu_Font=new JMenuItem("字体(F)...");
- formatMenu_Font.addActionListener(this);
-
-
- viewMenu=new JMenu("查看(V)");
- viewMenu.setMnemonic('V');
-
- viewMenu_Status=new JCheckBoxMenuItem("状态栏(S)");
- viewMenu_Status.setMnemonic('S');
- viewMenu_Status.setState(true);
- viewMenu_Status.addActionListener(this);
-
-
- helpMenu = new JMenu("帮助(H)");
- helpMenu.setMnemonic('H');
-
- helpMenu_HelpTopics = new JMenuItem("帮助主题(H)");
- helpMenu_HelpTopics.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,0));
- helpMenu_HelpTopics.addActionListener(this);
-
- helpMenu_AboutNotepad = new JMenuItem("关于记事本(A)");
- helpMenu_AboutNotepad.addActionListener(this);
-
-
- menuBar.add(fileMenu);
- fileMenu.add(fileMenu_New);
- fileMenu.add(fileMenu_Open);
- fileMenu.add(fileMenu_Save);
- fileMenu.add(fileMenu_SaveAs);
- fileMenu.addSeparator();
- fileMenu.add(fileMenu_PageSetUp);
- fileMenu.add(fileMenu_Print);
- fileMenu.addSeparator();
- fileMenu.add(fileMenu_Exit);
-
-
- menuBar.add(editMenu);
- editMenu.add(editMenu_Undo);
- editMenu.addSeparator();
- editMenu.add(editMenu_Cut);
- editMenu.add(editMenu_Copy);
- editMenu.add(editMenu_Paste);
- editMenu.add(editMenu_Delete);
- editMenu.addSeparator();
- editMenu.add(editMenu_Find);
- editMenu.add(editMenu_FindNext);
- editMenu.add(editMenu_Replace);
- editMenu.add(editMenu_GoTo);
- editMenu.addSeparator();
- editMenu.add(editMenu_SelectAll);
- editMenu.add(editMenu_TimeDate);
-
-
- menuBar.add(formatMenu);
- formatMenu.add(formatMenu_LineWrap);
- formatMenu.add(formatMenu_Font);
-
-
- menuBar.add(viewMenu);
- viewMenu.add(viewMenu_Status);
-
-
- menuBar.add(helpMenu);
- helpMenu.add(helpMenu_HelpTopics);
- helpMenu.addSeparator();
- helpMenu.add(helpMenu_AboutNotepad);
-
-
- this.setJMenuBar(menuBar);
-
-
- editArea=new JTextArea(20,50);
- JScrollPane scroller=new JScrollPane(editArea);
- scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- this.add(scroller,BorderLayout.CENTER);
- editArea.setWrapStyleWord(true);
- editArea.setLineWrap(true);
-
- oldValue=editArea.getText();
-
-
- editArea.getDocument().addUndoableEditListener(undoHandler);
- editArea.getDocument().addDocumentListener(this);
-
-
- popupMenu=new JPopupMenu();
- popupMenu_Undo=new JMenuItem("撤销(U)");
- popupMenu_Cut=new JMenuItem("剪切(T)");
- popupMenu_Copy=new JMenuItem("复制(C)");
- popupMenu_Paste=new JMenuItem("粘帖(P)");
- popupMenu_Delete=new JMenuItem("删除(D)");
- popupMenu_SelectAll=new JMenuItem("全选(A)");
-
- popupMenu_Undo.setEnabled(false);
-
-
- popupMenu.add(popupMenu_Undo);
- popupMenu.addSeparator();
- popupMenu.add(popupMenu_Cut);
- popupMenu.add(popupMenu_Copy);
- popupMenu.add(popupMenu_Paste);
- popupMenu.add(popupMenu_Delete);
- popupMenu.addSeparator();
- popupMenu.add(popupMenu_SelectAll);
-
-
- popupMenu_Undo.addActionListener(this);
- popupMenu_Cut.addActionListener(this);
- popupMenu_Copy.addActionListener(this);
- popupMenu_Paste.addActionListener(this);
- popupMenu_Delete.addActionListener(this);
- popupMenu_SelectAll.addActionListener(this);
-
-
- editArea.addMouseListener(new MouseAdapter()
- { public void mousePressed(MouseEvent e)
- { if(e.isPopupTrigger())
- { popupMenu.show(e.getComponent(),e.getX(),e.getY());
- }
- checkMenuItemEnabled();
- editArea.requestFocus();
- }
- public void mouseReleased(MouseEvent e)
- { if(e.isPopupTrigger())
- { popupMenu.show(e.getComponent(),e.getX(),e.getY());
- }
- checkMenuItemEnabled();
- editArea.requestFocus();
- }
- });
-
-
- statusLabel=new JLabel(" 按F1获取帮助");
- this.add(statusLabel,BorderLayout.SOUTH);
-
-
- this.setLocation(100,100);
- this.setSize(650,550);
- this.setVisible(true);
-
- addWindowListener(new WindowAdapter()
- { public void windowClosing(WindowEvent e)
- { exitWindowChoose();
- }
- });
-
- checkMenuItemEnabled();
- editArea.requestFocus();
- }
-
-
- public void checkMenuItemEnabled()
- { String selectText=editArea.getSelectedText();
- if(selectText==null)
- { editMenu_Cut.setEnabled(false);
- popupMenu_Cut.setEnabled(false);
- editMenu_Copy.setEnabled(false);
- popupMenu_Copy.setEnabled(false);
- editMenu_Delete.setEnabled(false);
- popupMenu_Delete.setEnabled(false);
- }
- else
- { editMenu_Cut.setEnabled(true);
- popupMenu_Cut.setEnabled(true);
- editMenu_Copy.setEnabled(true);
- popupMenu_Copy.setEnabled(true);
- editMenu_Delete.setEnabled(true);
- popupMenu_Delete.setEnabled(true);
- }
-
- Transferable contents=clipBoard.getContents(this);
- if(contents==null)
- { editMenu_Paste.setEnabled(false);
- popupMenu_Paste.setEnabled(false);
- }
- else
- { editMenu_Paste.setEnabled(true);
- popupMenu_Paste.setEnabled(true);
- }
- }
-
-
- public void exitWindowChoose()
- { editArea.requestFocus();
- String currentValue=editArea.getText();
- if(currentValue.equals(oldValue)==true)
- { System.exit(0);
- }
- else
- { int exitChoose=JOptionPane.showConfirmDialog(this,"您的文件还没有保存,是否保存?","退出提示",JOptionPane.YES_NO_CANCEL_OPTION);
- if(exitChoose==JOptionPane.YES_OPTION)
- {
- if(isNewFile)
- {
- String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
- fileChooser.setApproveButtonText("肯定");
- fileChooser.setDialogTitle("另存为");
-
- int result=fileChooser.showSaveDialog(this);
-
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText(" 您没有保存文件");
- return;
- }
-
- File saveFileName=fileChooser.getSelectedFile();
-
- if(saveFileName==null||saveFileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileWriter fw=new FileWriter(saveFileName);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- fw.close();
-
- isNewFile=false;
- currentFile=saveFileName;
- oldValue=editArea.getText();
-
- this.setTitle(saveFileName.getName()+" - 记事本");
- statusLabel.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile());
-
- }
- catch(IOException ioException){
- }
- }
- }
- else
- {
- try
- { FileWriter fw=new FileWriter(currentFile);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- fw.close();
-
- }
- catch(IOException ioException){
- }
- }
- System.exit(0);
-
-
- }
- else if(exitChoose==JOptionPane.NO_OPTION)
- { System.exit(0);
- }
- else
- { return;
- }
- }
- }
-
-
- public void find()
- { final JDialog findDialog=new JDialog(this,"查找",false);
- Container con=findDialog.getContentPane();
- con.setLayout(new FlowLayout(FlowLayout.LEFT));
- JLabel findContentLabel=new JLabel("查找内容(N):");
- final JTextField findText=new JTextField(15);
- JButton findNextButton=new JButton("查找下一个(F):");
- final JCheckBox matchCheckBox=new JCheckBox("区分大小写(C)");
- ButtonGroup bGroup=new ButtonGroup();
- final JRadioButton upButton=new JRadioButton("向上(U)");
- final JRadioButton downButton=new JRadioButton("向下(U)");
- downButton.setSelected(true);
- bGroup.add(upButton);
- bGroup.add(downButton);
-
-
-
-
-
- JButton cancel=new JButton("取消");
-
- cancel.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { findDialog.dispose();
- }
- });
-
- findNextButton.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- {
- int k=0,m=0;
- final String str1,str2,str3,str4,strA,strB;
- str1=editArea.getText();
- str2=findText.getText();
- str3=str1.toUpperCase();
- str4=str2.toUpperCase();
- if(matchCheckBox.isSelected())
- { strA=str1;
- strB=str2;
- }
- else
- { strA=str3;
- strB=str4;
- }
- if(upButton.isSelected())
- {
- if(editArea.getSelectedText()==null)
- k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);
- else
- k=strA.lastIndexOf(strB, editArea.getCaretPosition()-findText.getText().length()-1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- else if(downButton.isSelected())
- { if(editArea.getSelectedText()==null)
- k=strA.indexOf(strB,editArea.getCaretPosition()+1);
- else
- k=strA.indexOf(strB, editArea.getCaretPosition()-findText.getText().length()+1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- }
- });
-
- JPanel panel1=new JPanel();
- JPanel panel2=new JPanel();
- JPanel panel3=new JPanel();
- JPanel directionPanel=new JPanel();
- directionPanel.setBorder(BorderFactory.createTitledBorder("方向"));
-
-
- directionPanel.add(upButton);
- directionPanel.add(downButton);
- panel1.setLayout(new GridLayout(2,1));
- panel1.add(findNextButton);
- panel1.add(cancel);
- panel2.add(findContentLabel);
- panel2.add(findText);
- panel2.add(panel1);
- panel3.add(matchCheckBox);
- panel3.add(directionPanel);
- con.add(panel2);
- con.add(panel3);
- findDialog.setSize(410,180);
- findDialog.setResizable(false);
- findDialog.setLocation(230,280);
- findDialog.setVisible(true);
- }
-
-
- public void replace()
- { final JDialog replaceDialog=new JDialog(this,"替换",false);
- Container con=replaceDialog.getContentPane();
- con.setLayout(new FlowLayout(FlowLayout.CENTER));
- JLabel findContentLabel=new JLabel("查找内容(N):");
- final JTextField findText=new JTextField(15);
- JButton findNextButton=new JButton("查找下一个(F):");
- JLabel replaceLabel=new JLabel("替换为(P):");
- final JTextField replaceText=new JTextField(15);
- JButton replaceButton=new JButton("替换(R)");
- JButton replaceAllButton=new JButton("所有替换(A)");
- JButton cancel=new JButton("取消");
- cancel.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { replaceDialog.dispose();
- }
- });
- final JCheckBox matchCheckBox=new JCheckBox("区分大小写(C)");
- ButtonGroup bGroup=new ButtonGroup();
- final JRadioButton upButton=new JRadioButton("向上(U)");
- final JRadioButton downButton=new JRadioButton("向下(U)");
- downButton.setSelected(true);
- bGroup.add(upButton);
- bGroup.add(downButton);
-
-
-
-
-
-
-
- findNextButton.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- {
- int k=0,m=0;
- final String str1,str2,str3,str4,strA,strB;
- str1=editArea.getText();
- str2=findText.getText();
- str3=str1.toUpperCase();
- str4=str2.toUpperCase();
- if(matchCheckBox.isSelected())
- { strA=str1;
- strB=str2;
- }
- else
- { strA=str3;
- strB=str4;
- }
- if(upButton.isSelected())
- {
- if(editArea.getSelectedText()==null)
- k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);
- else
- k=strA.lastIndexOf(strB, editArea.getCaretPosition()-findText.getText().length()-1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- else if(downButton.isSelected())
- { if(editArea.getSelectedText()==null)
- k=strA.indexOf(strB,editArea.getCaretPosition()+1);
- else
- k=strA.indexOf(strB, editArea.getCaretPosition()-findText.getText().length()+1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { JOptionPane.showMessageDialog(null,"找不到您查找的内容!","查找",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- }
- });
-
-
- replaceButton.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { if(replaceText.getText().length()==0 && editArea.getSelectedText()!=null)
- editArea.replaceSelection("");
- if(replaceText.getText().length()>0 && editArea.getSelectedText()!=null)
- editArea.replaceSelection(replaceText.getText());
- }
- });
-
-
- replaceAllButton.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { editArea.setCaretPosition(0);
- int k=0,m=0,replaceCount=0;
- if(findText.getText().length()==0)
- { JOptionPane.showMessageDialog(replaceDialog,"请填写查找内容!","提示",JOptionPane.WARNING_MESSAGE);
- findText.requestFocus(true);
- return;
- }
- while(k>-1)
- {
-
- final String str1,str2,str3,str4,strA,strB;
- str1=editArea.getText();
- str2=findText.getText();
- str3=str1.toUpperCase();
- str4=str2.toUpperCase();
- if(matchCheckBox.isSelected())
- { strA=str1;
- strB=str2;
- }
- else
- { strA=str3;
- strB=str4;
- }
- if(upButton.isSelected())
- {
- if(editArea.getSelectedText()==null)
- k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);
- else
- k=strA.lastIndexOf(strB, editArea.getCaretPosition()-findText.getText().length()-1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { if(replaceCount==0)
- { JOptionPane.showMessageDialog(replaceDialog, "找不到您查找的内容!", "记事本",JOptionPane.INFORMATION_MESSAGE);
- }
- else
- { JOptionPane.showMessageDialog(replaceDialog,"成功替换"+replaceCount+"个匹配内容!","替换成功",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- }
- else if(downButton.isSelected())
- { if(editArea.getSelectedText()==null)
- k=strA.indexOf(strB,editArea.getCaretPosition()+1);
- else
- k=strA.indexOf(strB, editArea.getCaretPosition()-findText.getText().length()+1);
- if(k>-1)
- {
- editArea.setCaretPosition(k);
- editArea.select(k,k+strB.length());
- }
- else
- { if(replaceCount==0)
- { JOptionPane.showMessageDialog(replaceDialog, "找不到您查找的内容!", "记事本",JOptionPane.INFORMATION_MESSAGE);
- }
- else
- { JOptionPane.showMessageDialog(replaceDialog,"成功替换"+replaceCount+"个匹配内容!","替换成功",JOptionPane.INFORMATION_MESSAGE);
- }
- }
- }
- if(replaceText.getText().length()==0 && editArea.getSelectedText()!= null)
- { editArea.replaceSelection("");
- replaceCount++;
- }
-
- if(replaceText.getText().length()>0 && editArea.getSelectedText()!= null)
- { editArea.replaceSelection(replaceText.getText());
- replaceCount++;
- }
- }
- }
- });
-
-
- JPanel directionPanel=new JPanel();
- directionPanel.setBorder(BorderFactory.createTitledBorder("方向"));
-
-
- directionPanel.add(upButton);
- directionPanel.add(downButton);
- JPanel panel1=new JPanel();
- JPanel panel2=new JPanel();
- JPanel panel3=new JPanel();
- JPanel panel4=new JPanel();
- panel4.setLayout(new GridLayout(2,1));
- panel1.add(findContentLabel);
- panel1.add(findText);
- panel1.add(findNextButton);
- panel4.add(replaceButton);
- panel4.add(replaceAllButton);
- panel2.add(replaceLabel);
- panel2.add(replaceText);
- panel2.add(panel4);
- panel3.add(matchCheckBox);
- panel3.add(directionPanel);
- panel3.add(cancel);
- con.add(panel1);
- con.add(panel2);
- con.add(panel3);
- replaceDialog.setSize(420,220);
- replaceDialog.setResizable(false);
- replaceDialog.setLocation(230,280);
- replaceDialog.setVisible(true);
- }
-
-
- public void font()
- { final JDialog fontDialog=new JDialog(this,"字体设置",false);
- Container con=fontDialog.getContentPane();
- con.setLayout(new FlowLayout(FlowLayout.LEFT));
- JLabel fontLabel=new JLabel("字体(F):");
- fontLabel.setPreferredSize(new Dimension(100,20));
- JLabel styleLabel=new JLabel("字形(Y):");
- styleLabel.setPreferredSize(new Dimension(100,20));
- JLabel sizeLabel=new JLabel("大小(S):");
- sizeLabel.setPreferredSize(new Dimension(100,20));
- final JLabel sample=new JLabel("张选仲的记事本-ZXZ's Notepad");
-
- final JTextField fontText=new JTextField(9);
- fontText.setPreferredSize(new Dimension(200,20));
- final JTextField styleText=new JTextField(8);
- styleText.setPreferredSize(new Dimension(200,20));
- final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};
- final JTextField sizeText=new JTextField(5);
- sizeText.setPreferredSize(new Dimension(200,20));
- JButton okButton=new JButton("肯定");
- JButton cancel=new JButton("取消");
- cancel.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { fontDialog.dispose();
- }
- });
- Font currentFont=editArea.getFont();
- fontText.setText(currentFont.getFontName());
- fontText.selectAll();
-
-
- if(currentFont.getStyle()==Font.PLAIN)
- styleText.setText("常规");
- else if(currentFont.getStyle()==Font.BOLD)
- styleText.setText("粗体");
- else if(currentFont.getStyle()==Font.ITALIC)
- styleText.setText("斜体");
- else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))
- styleText.setText("粗斜体");
- styleText.selectAll();
- String str=String.valueOf(currentFont.getSize());
- sizeText.setText(str);
- sizeText.selectAll();
- final JList fontList,styleList,sizeList;
- GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
- final String fontName[]=ge.getAvailableFontFamilyNames();
- fontList=new JList(fontName);
- fontList.setFixedCellWidth(86);
- fontList.setFixedCellHeight(20);
- fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- final String fontStyle[]={"常规","粗体","斜体","粗斜体"};
- styleList=new JList(fontStyle);
- styleList.setFixedCellWidth(86);
- styleList.setFixedCellHeight(20);
- styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- if(currentFont.getStyle()==Font.PLAIN)
- styleList.setSelectedIndex(0);
- else if(currentFont.getStyle()==Font.BOLD)
- styleList.setSelectedIndex(1);
- else if(currentFont.getStyle()==Font.ITALIC)
- styleList.setSelectedIndex(2);
- else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))
- styleList.setSelectedIndex(3);
- final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
- sizeList=new JList(fontSize);
- sizeList.setFixedCellWidth(43);
- sizeList.setFixedCellHeight(20);
- sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- fontList.addListSelectionListener(new ListSelectionListener()
- { public void valueChanged(ListSelectionEvent event)
- { fontText.setText(fontName[fontList.getSelectedIndex()]);
- fontText.selectAll();
- Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
- sample.setFont(sampleFont1);
- }
- });
- styleList.addListSelectionListener(new ListSelectionListener()
- { public void valueChanged(ListSelectionEvent event)
- { int s=style[styleList.getSelectedIndex()];
- styleText.setText(fontStyle[s]);
- styleText.selectAll();
- Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
- sample.setFont(sampleFont2);
- }
- });
- sizeList.addListSelectionListener(new ListSelectionListener()
- { public void valueChanged(ListSelectionEvent event)
- { sizeText.setText(fontSize[sizeList.getSelectedIndex()]);
-
- sizeText.selectAll();
- Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
- sample.setFont(sampleFont3);
- }
- });
- okButton.addActionListener(new ActionListener()
- { public void actionPerformed(ActionEvent e)
- { Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
- editArea.setFont(okFont);
- fontDialog.dispose();
- }
- });
- JPanel samplePanel=new JPanel();
- samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));
-
- samplePanel.add(sample);
- JPanel panel1=new JPanel();
- JPanel panel2=new JPanel();
- JPanel panel3=new JPanel();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- panel2.add(fontText);
- panel2.add(styleText);
- panel2.add(sizeText);
- panel2.add(okButton);
- panel3.add(new JScrollPane(fontList));
- panel3.add(new JScrollPane(styleList));
- panel3.add(new JScrollPane(sizeList));
- panel3.add(cancel);
- con.add(panel1);
- con.add(panel2);
- con.add(panel3);
- con.add(samplePanel);
- fontDialog.setSize(350,340);
- fontDialog.setLocation(200,200);
- fontDialog.setResizable(false);
- fontDialog.setVisible(true);
- }
-
-
-
-
-
- public void actionPerformed(ActionEvent e)
- {
- if(e.getSource()==fileMenu_New)
- { editArea.requestFocus();
- String currentValue=editArea.getText();
- boolean isTextChange=(currentValue.equals(oldValue))?false:true;
- if(isTextChange)
- { int saveChoose=JOptionPane.showConfirmDialog(this,"您的文件还没有保存,是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
- if(saveChoose==JOptionPane.YES_OPTION)
- { String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("另存为");
- int result=fileChooser.showSaveDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText("您没有选择任何文件");
- return;
- }
- File saveFileName=fileChooser.getSelectedFile();
- if(saveFileName==null || saveFileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileWriter fw=new FileWriter(saveFileName);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- bfw.close();
- isNewFile=false;
- currentFile=saveFileName;
- oldValue=editArea.getText();
- this.setTitle(saveFileName.getName()+" - 记事本");
- statusLabel.setText("当前打开文件:"+saveFileName.getAbsoluteFile());
- }
- catch (IOException ioException)
- {
- }
- }
- }
- else if(saveChoose==JOptionPane.NO_OPTION)
- { editArea.replaceRange("",0,editArea.getText().length());
- statusLabel.setText(" 新建文件");
- this.setTitle("无标题 - 记事本");
- isNewFile=true;
- undo.discardAllEdits();
- editMenu_Undo.setEnabled(false);
- oldValue=editArea.getText();
- }
- else if(saveChoose==JOptionPane.CANCEL_OPTION)
- { return;
- }
- }
- else
- { editArea.replaceRange("",0,editArea.getText().length());
- statusLabel.setText(" 新建文件");
- this.setTitle("无标题 - 记事本");
- isNewFile=true;
- undo.discardAllEdits();
- editMenu_Undo.setEnabled(false);
- oldValue=editArea.getText();
- }
- }
-
- else if(e.getSource()==fileMenu_Open)
- { editArea.requestFocus();
- String currentValue=editArea.getText();
- boolean isTextChange=(currentValue.equals(oldValue))?false:true;
- if(isTextChange)
- { int saveChoose=JOptionPane.showConfirmDialog(this,"您的文件还没有保存,是否保存?","提示",JOptionPane.YES_NO_CANCEL_OPTION);
- if(saveChoose==JOptionPane.YES_OPTION)
- { String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("另存为");
- int result=fileChooser.showSaveDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText("您没有选择任何文件");
- return;
- }
- File saveFileName=fileChooser.getSelectedFile();
- if(saveFileName==null || saveFileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileWriter fw=new FileWriter(saveFileName);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- bfw.close();
- isNewFile=false;
- currentFile=saveFileName;
- oldValue=editArea.getText();
- this.setTitle(saveFileName.getName()+" - 记事本");
- statusLabel.setText("当前打开文件:"+saveFileName.getAbsoluteFile());
- }
- catch (IOException ioException)
- {
- }
- }
- }
- else if(saveChoose==JOptionPane.NO_OPTION)
- { String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("打开文件");
- int result=fileChooser.showOpenDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText("您没有选择任何文件");
- return;
- }
- File fileName=fileChooser.getSelectedFile();
- if(fileName==null || fileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileReader fr=new FileReader(fileName);
- BufferedReader bfr=new BufferedReader(fr);
- editArea.setText("");
- while((str=bfr.readLine())!=null)
- { editArea.append(str);
- }
- this.setTitle(fileName.getName()+" - 记事本");
- statusLabel.setText(" 当前打开文件:"+fileName.getAbsoluteFile());
- fr.close();
- isNewFile=false;
- currentFile=fileName;
- oldValue=editArea.getText();
- }
- catch (IOException ioException)
- {
- }
- }
- }
- else
- { return;
- }
- }
- else
- { String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("打开文件");
- int result=fileChooser.showOpenDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText(" 您没有选择任何文件 ");
- return;
- }
- File fileName=fileChooser.getSelectedFile();
- if(fileName==null || fileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileReader fr=new FileReader(fileName);
- BufferedReader bfr=new BufferedReader(fr);
- editArea.setText("");
- while((str=bfr.readLine())!=null)
- { editArea.append(str);
- }
- this.setTitle(fileName.getName()+" - 记事本");
- statusLabel.setText(" 当前打开文件:"+fileName.getAbsoluteFile());
- fr.close();
- isNewFile=false;
- currentFile=fileName;
- oldValue=editArea.getText();
- }
- catch (IOException ioException)
- {
- }
- }
- }
- }
-
- else if(e.getSource()==fileMenu_Save)
- { editArea.requestFocus();
- if(isNewFile)
- { String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("保存");
- int result=fileChooser.showSaveDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText("您没有选择任何文件");
- return;
- }
- File saveFileName=fileChooser.getSelectedFile();
- if(saveFileName==null || saveFileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileWriter fw=new FileWriter(saveFileName);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- bfw.close();
- isNewFile=false;
- currentFile=saveFileName;
- oldValue=editArea.getText();
- this.setTitle(saveFileName.getName()+" - 记事本");
- statusLabel.setText("当前打开文件:"+saveFileName.getAbsoluteFile());
- }
- catch (IOException ioException)
- {
- }
- }
- }
- else
- { try
- { FileWriter fw=new FileWriter(currentFile);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- fw.close();
- }
- catch(IOException ioException)
- {
- }
- }
- }
-
- else if(e.getSource()==fileMenu_SaveAs)
- { editArea.requestFocus();
- String str=null;
- JFileChooser fileChooser=new JFileChooser();
- fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
- fileChooser.setDialogTitle("另存为");
- int result=fileChooser.showSaveDialog(this);
- if(result==JFileChooser.CANCEL_OPTION)
- { statusLabel.setText(" 您没有选择任何文件");
- return;
- }
- File saveFileName=fileChooser.getSelectedFile();
- if(saveFileName==null||saveFileName.getName().equals(""))
- { JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);
- }
- else
- { try
- { FileWriter fw=new FileWriter(saveFileName);
- BufferedWriter bfw=new BufferedWriter(fw);
- bfw.write(editArea.getText(),0,editArea.getText().length());
- bfw.flush();
- fw.close();
- oldValue=editArea.getText();
- this.setTitle(saveFileName.getName()+" - 记事本");
- statusLabel.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile());
- }
- catch(IOException ioException)
- {
- }
- }
- }
-
- else if(e.getSource()==fileMenu_PageSetUp)
- { editArea.requestFocus();
- JOptionPane.showMessageDialog(this,"对不起,此功能还没有实现!更多请看http://pan.muyi.so","提示",JOptionPane.WARNING_MESSAGE);
- }
-
- else if(e.getSource()==fileMenu_Print)
- { editArea.requestFocus();
- JOptionPane.showMessageDialog(this,"对不起,此功能还没有实现!更多请看http://pan.muyi.so","提示",JOptionPane.WARNING_MESSAGE);
- }
-
- else if(e.getSource()==fileMenu_Exit)
- { int exitChoose=JOptionPane.showConfirmDialog(this,"肯定要退出吗?","退出提示",JOptionPane.OK_CANCEL_OPTION);
- if(exitChoose==JOptionPane.OK_OPTION)
- { System.exit(0);
- }
- else
- { return;
- }
- }
-
-
-
-
-
-
- else if(e.getSource()==editMenu_Undo || e.getSource()==popupMenu_Undo)
- { editArea.requestFocus();
- if(undo.canUndo())
- { try
- { undo.undo();
- }
- catch (CannotUndoException ex)
- { System.out.println("Unable to undo:" + ex);
-
- }
- }
- if(!undo.canUndo())
- { editMenu_Undo.setEnabled(false);
- }
- }
-
- else if(e.getSource()==editMenu_Cut || e.getSource()==popupMenu_Cut)
- { editArea.requestFocus();
- String text=editArea.getSelectedText();
- StringSelection selection=new StringSelection(text);
- clipBoard.setContents(selection,null);
- editArea.replaceRange("",editArea.getSelectionStart(),editArea.getSelectionEnd());
- checkMenuItemEnabled();
- }
-
- else if(e.getSource()==editMenu_Copy || e.getSource()==popupMenu_Copy)
- { editArea.requestFocus();
- String text=editArea.getSelectedText();
- StringSelection selection=new StringSelection(text);
- clipBoard.setContents(selection,null);
- checkMenuItemEnabled();
- }
-
- else if(e.getSource()==editMenu_Paste || e.getSource()==popupMenu_Paste)
- { editArea.requestFocus();
- Transferable contents=clipBoard.getContents(this);
- if(contents==null)return;
- String text="";
- try
- { text=(String)contents.getTransferData(DataFlavor.stringFlavor);
- }
- catch (Exception exception)
- {
- }
- editArea.replaceRange(text,editArea.getSelectionStart(),editArea.getSelectionEnd());
- checkMenuItemEnabled();
- }
-
- else if(e.getSource()==editMenu_Delete || e.getSource()==popupMenu_Delete)
- { editArea.requestFocus();
- editArea.replaceRange("",editArea.getSelectionStart(),editArea.getSelectionEnd());
- checkMenuItemEnabled();
- }
-
- else if(e.getSource()==editMenu_Find)
- { editArea.requestFocus();
- find();
- }
-
- else if(e.getSource()==editMenu_FindNext)
- { editArea.requestFocus();
- find();
- }
-
- else if(e.getSource()==editMenu_Replace)
- { editArea.requestFocus();
- replace();
- }
-
- else if(e.getSource()==editMenu_GoTo)
- { editArea.requestFocus();
- JOptionPane.showMessageDialog(this,"对不起,此功能还没有实现!更多请看http://pan.muyi.so","提示",JOptionPane.WARNING_MESSAGE);
- }
-
- else if(e.getSource()==editMenu_TimeDate)
- { editArea.requestFocus();
-
-
- Calendar rightNow=Calendar.getInstance();
- Date date=rightNow.getTime();
- editArea.insert(date.toString(),editArea.getCaretPosition());
- }
-
- else if(e.getSource()==editMenu_SelectAll || e.getSource()==popupMenu_SelectAll)
- { editArea.selectAll();
- }
-
- else if(e.getSource()==formatMenu_LineWrap)
- { if(formatMenu_LineWrap.getState())
- editArea.setLineWrap(true);
- else
- editArea.setLineWrap(false);
-
- }
-
- else if(e.getSource()==formatMenu_Font)
- { editArea.requestFocus();
- font();
- }
-
- else if(e.getSource()==viewMenu_Status)
- { if(viewMenu_Status.getState())
- statusLabel.setVisible(true);
- else
- statusLabel.setVisible(false);
- }
-
- else if(e.getSource()==helpMenu_HelpTopics)
- { editArea.requestFocus();
- JOptionPane.showMessageDialog(this,"路漫漫其修远兮,吾将上下而求索。","帮助主题",JOptionPane.INFORMATION_MESSAGE);
- }
-
- else if(e.getSource()==helpMenu_AboutNotepad)
- { editArea.requestFocus();
- JOptionPane.showMessageDialog(this,
- "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"+
- " 编写者:沐伊科技 \n"+
- " 编写时间:2016-06-09 \n"+
- " 更多教程:http://pan.muyi.so (网盘资源教程应有尽有哦!) \n"+
- " e-mail:llqqxf@163.com \n"+
- " 一些地方借鉴他人,不足之处但愿你们能提出意见,谢谢! \n"+
- "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n",
- "记事本",JOptionPane.INFORMATION_MESSAGE);
- }
- }
-
-
- public void removeUpdate(DocumentEvent e)
- { editMenu_Undo.setEnabled(true);
- }
- public void insertUpdate(DocumentEvent e)
- { editMenu_Undo.setEnabled(true);
- }
- public void changedUpdate(DocumentEvent e)
- { editMenu_Undo.setEnabled(true);
- }
-
-
- class UndoHandler implements UndoableEditListener
- { public void undoableEditHappened(UndoableEditEvent uee)
- { undo.addEdit(uee.getEdit());
- }
- }
-
-
- public static void main(String args[])
- { Notepad notepad=new Notepad();
- notepad.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- }