Java实现记事本功能

今天给大家介绍一下关于如何用Java实现记事本功能,是学习Java swing的一个非常好的案例,下面先看一下运行结果: 

下面我们来看源码:

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');//设置快捷键ALT+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');//设置快捷键ALT+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');//设置快捷键ALT+O

formatMenu_LineWrap=new JCheckBoxMenuItem("自动换行(W)");

formatMenu_LineWrap.setMnemonic('W');//设置快捷键ALT+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');//设置快捷键ALT+V

viewMenu_Status=new JCheckBoxMenuItem("状态栏(S)");

viewMenu_Status.setMnemonic('S');//设置快捷键ALT+S

viewMenu_Status.setState(true);

viewMenu_Status.addActionListener(this);

//创建帮助菜单及菜单项并注册事件监听

helpMenu = new JMenu("帮助(H)");

helpMenu.setMnemonic('H');//设置快捷键ALT+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);//设置文本编辑区自动换行默认为true,即会"自动换行"

//this.add(editArea,BorderLayout.CENTER);//向窗口添加文本编辑区

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());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单

}

checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性

editArea.requestFocus();//编辑区获取焦点

}

public void mouseReleased(MouseEvent e)

{ if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件

{ popupMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单

}

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();

}//构造函数Notepad结束

//设置菜单项的可用性:剪切,复制,粘帖,删除功能

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);

}

}//方法checkMenuItemEnabled()结束

//关闭窗口时调用

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)

{ //boolean isSave=false;

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());

//isSave=true;

}

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();

//isSave=true;

}

catch(IOException ioException){

}

}

System.exit(0);

//if(isSave)System.exit(0);

//else return;

}

else if(exitChoose==JOptionPane.NO_OPTION)

{ System.exit(0);

}

else

{ return;

}

}

}//关闭窗口时调用方法结束

//查找方法

public void find()

{ final JDialog findDialog=new JDialog(this,"查找",false);//false时允许其他窗口同时处于激活状态(即无模式)

Container con=findDialog.getContentPane();//返回此对话框的contentPane对象

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);

/*ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。

使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。*/

/*JRadioButton此类实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。

与 ButtonGroup 对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。

(创建一个 ButtonGroup 对象并用其 add 方法将 JRadioButton 对象包含在此组中。)*/

JButton cancel=new JButton("取消");

//取消按钮事件处理

cancel.addActionListener(new ActionListener()

{ public void actionPerformed(ActionEvent e)

{ findDialog.dispose();

}

});

//"查找下一个"按钮监听

findNextButton.addActionListener(new ActionListener()

{ public void actionPerformed(ActionEvent e)

{ //"区分大小写(C)"的JCheckBox是否被选中

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())

{ //k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);

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)

{ //String strData=strA.subString(k,strB.getText().length()+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)

{ //String strData=strA.subString(k,strB.getText().length()+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组件的边框;

//BorderFactory.createTitledBorder(String title)创建一个新标题边框,使用默认边框(浮雕化)、默认文本位置(位于顶线上)、默认调整 (leading) 以及由当前外观确定的默认字体和文本颜色,并指定了标题文本。

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);//false时允许其他窗口同时处于激活状态(即无模式)

Container con=replaceDialog.getContentPane();//返回此对话框的contentPane对象

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);

/*ButtonGroup此类用于为一组按钮创建一个多斥(multiple-exclusion)作用域。

使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。*/

/*JRadioButton此类实现一个单选按钮,此按钮项可被选择或取消选择,并可为用户显示其状态。

与 ButtonGroup 对象配合使用可创建一组按钮,一次只能选择其中的一个按钮。

(创建一个 ButtonGroup 对象并用其 add 方法将 JRadioButton 对象包含在此组中。)*/

//"查找下一个"按钮监听

findNextButton.addActionListener(new ActionListener()

{ public void actionPerformed(ActionEvent e)

{ //"区分大小写(C)"的JCheckBox是否被选中

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())

{ //k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);

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)

{ //String strData=strA.subString(k,strB.getText().length()+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)

{ //String strData=strA.subString(k,strB.getText().length()+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)//当文本中有内容被选中时(k>-1被选中)进行替换,否则不进行while循环

{ //"区分大小写(C)"的JCheckBox是否被选中

//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())

{ //k=strA.lastIndexOf(strB,editArea.getCaretPosition()-1);

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)

{ //String strData=strA.subString(k,strB.getText().length()+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)

{ //String strData=strA.subString(k,strB.getText().length()+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++;

}

}//while循环结束

}

});//"替换全部"方法结束

//创建"替换"对话框的界面

JPanel directionPanel=new JPanel();

directionPanel.setBorder(BorderFactory.createTitledBorder("方向"));

//设置directionPanel组件的边框;

//BorderFactory.createTitledBorder(String title)创建一个新标题边框,使用默认边框(浮雕化)、默认文本位置(位于顶线上)、默认调整 (leading) 以及由当前外观确定的默认字体和文本颜色,并指定了标题文本。

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));//构造一个Dimension,并将其初始化为指定宽度和高度

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");

//sample.setHorizontalAlignment(SwingConstants.CENTER);

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();

//styleText.setText(currentFont.getStyle());

//styleText.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.requestFocus();

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.setLayout(new FlowLayout(FlowLayout.CENTER));

samplePanel.add(sample);

JPanel panel1=new JPanel();

JPanel panel2=new JPanel();

JPanel panel3=new JPanel();

//JPanel panel4=new JPanel();

//JPanel panel5=new JPanel();

//panel1.add(fontLabel);

//panel1.add(styleLabel);

//panel1.add(sizeLabel);

//panel2.add(fontText);

//panel2.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图

//panel2.setLayout(new GridLayout(2,1));

//panel3.add(styleText);

//panel3.add(new JScrollPane(styleList));

//panel3.setLayout(new GridLayout(2,1));

//panel4.add(sizeText);

//panel4.add(new JScrollPane(sizeText));

//panel4.setLayout(new GridLayout(2,1));

//panel5.add(okButton);

//panel5.add(cancel);

//con.add(panel1);

//con.add(panel2);

//con.add(panel3);

//con.add(panel4);

//con.add(panel5);

panel2.add(fontText);

panel2.add(styleText);

panel2.add(sizeText);

panel2.add(okButton);

panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图

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 menuPerformed(MenuEvent e)

//{ checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性

//}

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.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();//刷新该流的缓冲

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.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();//刷新该流的缓冲

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.setApproveButtonText("确定");

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.setApproveButtonText("确定");

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.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();//刷新该流的缓冲

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.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();

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)

//{ checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性

//}

//编辑结束

//撤销

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);

//ex.printStackTrace();

}

}

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();

//SimpleDateFormat currentDateTime=new SimpleDateFormat("HH:mmyyyy-MM-dd");

//editArea.insert(currentDateTime.format(new Date()),editArea.getCaretPosition());

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);

}//关于结束

}//方法actionPerformed()结束

//实现DocumentListener接口中的方法(与撤销操作有关)

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);

}//DocumentListener结束

//实现接口UndoableEditListener的类UndoHandler(与撤销操作有关)

class UndoHandler implements UndoableEditListener

{ public void undoableEditHappened(UndoableEditEvent uee)

{ undo.addEdit(uee.getEdit());

}

}

//main函数开始

public static void main(String args[])

{ Notepad notepad=new Notepad();

notepad.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用 System exit 方法退出应用程序

}//main函数结束

}

以上是 Java实现记事本功能 的全部内容, 来源链接: utcz.com/p/212813.html

回到顶部