这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要为大家详细介绍了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函数结束
- }
来源: http://www.phperz.com/article/17/0907/338404.html