📄 mynotepad.java
字号:
JLabel replaceContentLabel = new JLabel("替换为(P) :"); final JTextField findText = new JTextField(30); final JTextField replaceText = new JTextField(30); final JCheckBox matchcase = new JCheckBox("区分大小写(C)"); ButtonGroup bGroup = new ButtonGroup(); final JRadioButton up = new JRadioButton("向上(U)"); final JRadioButton down = new JRadioButton("向下(D)"); down.setSelected(true); bGroup.add(up); bGroup.add(down); JButton searchNext = new JButton("查找下一个(F)"); JButton replace = new JButton("替换(R)"); final JButton replaceAll = new JButton("全部替换(A)"); //"替换"按钮的事件处理 replace.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (replaceText.getText().length() == 0 && tex.getSelectedText() != null) { tex.replaceSelection(""); } if (replaceText.getText().length() > 0 && tex.getSelectedText() != null) { tex.replaceSelection(replaceText.getText()); } } }); //"替换全部"按钮的事件处理 replaceAll.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tex.setCaretPosition(0); //将光标放到编辑区开头 int a = 0, b = 0, replaceCount = 0; if (findText.getText().length() == 0) { JOptionPane.showMessageDialog(findDialog, "请填写查找内容!", "提示", JOptionPane.WARNING_MESSAGE); findText.requestFocus(true); return; } while (a > -1) { int FindStartPos = tex.getCaretPosition(); String str1, str2, str3, str4, strA, strB; str1 = tex.getText(); str2 = str1.toLowerCase(); str3 = findText.getText(); str4 = str3.toLowerCase(); if (matchcase.isSelected()) { strA = str1; strB = str3; } else { strA = str2; strB = str4; } if (up.isSelected()) { if (tex.getSelectedText() == null) { a = strA.lastIndexOf(strB, FindStartPos - 1); } else { a = strA.lastIndexOf(strB, FindStartPos - findText.getText().length() - 1); } } else if (down.isSelected()) { if (tex.getSelectedText() == null) { a = strA.indexOf(strB, FindStartPos); } else { a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1); } } if (a > -1) { if (up.isSelected()) { tex.setCaretPosition(a); b = findText.getText().length(); tex.select(a, a + b); } else if (down.isSelected()) { tex.setCaretPosition(a); b = findText.getText().length(); tex.select(a, a + b); } } else { if (replaceCount == 0) { JOptionPane.showMessageDialog(findDialog, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(findDialog, "成功替换" + replaceCount + "个匹配内容!", "替换成功", JOptionPane.INFORMATION_MESSAGE); } } if (replaceText.getText().length() == 0 && tex.getSelectedText() != null) { tex.replaceSelection(""); replaceCount++; } if (replaceText.getText().length() > 0 && tex.getSelectedText() != null) { tex.replaceSelection(replaceText.getText()); replaceCount++; } }//end while } }); //"替换全部"按钮的事件处理结束 //"查找下一个"按钮事件处理 searchNext.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int a = 0, b = 0; int FindStartPos = tex.getCaretPosition(); String str1, str2, str3, str4, strA, strB; str1 = tex.getText(); str2 = str1.toLowerCase(); str3 = findText.getText(); str4 = str3.toLowerCase(); //"区分大小写"的CheckBox被选中 if (matchcase.isSelected()) { strA = str1; strB = str3; } else { strA = str2; strB = str4; } if (up.isSelected()) { if (tex.getSelectedText() == null) { a = strA.lastIndexOf(strB, FindStartPos - 1); } else { a = strA.lastIndexOf(strB, FindStartPos - findText.getText().length() - 1); } } else if (down.isSelected()) { if (tex.getSelectedText() == null) { a = strA.indexOf(strB, FindStartPos); } else { a = strA.indexOf(strB, FindStartPos - findText.getText().length() + 1); } } if (a > -1) { if (up.isSelected()) { tex.setCaretPosition(a); b = findText.getText().length(); tex.select(a, a + b); } else if (down.isSelected()) { tex.setCaretPosition(a); b = findText.getText().length(); tex.select(a, a + b); } } else { JOptionPane.showMessageDialog(null, "找不到您查找的内容!", "记事本", JOptionPane.INFORMATION_MESSAGE); } } });//"查找下一个"按钮事件处理结束 //"取消"按钮及事件处理 JButton cancel = new JButton("取消"); cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { findDialog.dispose(); } }); //创建"查找与替换"对话框的界面 JPanel bottomPanel = new JPanel(); JPanel centerPanel = new JPanel(); JPanel topPanel = new JPanel(); JPanel direction = new JPanel(); direction.setBorder(BorderFactory.createTitledBorder("方向")); direction.add(up); direction.add(down); JPanel replacePanel = new JPanel(); replacePanel.setLayout(new GridLayout(1, 2)); replacePanel.add(replace); replacePanel.add(replaceAll); topPanel.add(searchContentLabel); topPanel.add(findText); topPanel.add(searchNext); centerPanel.add(replaceContentLabel); centerPanel.add(replaceText); centerPanel.add(replacePanel); bottomPanel.add(matchcase); bottomPanel.add(direction); bottomPanel.add(cancel); con.add(topPanel); con.add(centerPanel); con.add(bottomPanel); con.add(replacePanel); //设置"查找与替换"对话框的大小、可更改大小(否)、位置和可见性 findDialog.setSize(550, 240); findDialog.setResizable(true); findDialog.setLocation(230, 280); findDialog.setVisible(true); }//方法mySearch()结束//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//$$$$$$$$$$$$$$$$$$$$设置菜单项的可用性:剪切,复制,粘贴,删除功能$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ public void checkMenuItemEnabled() { //主要是通过判断编辑区是否有文本被选中来设置这些操作(剪切,复制,删除)的可用性; //通过判断剪贴板信息设置粘贴选项的可用性 String selectText = tex.getSelectedText(); if (selectText == null) { me2.setEnabled(false); //剪切 popupMenu_Cut.setEnabled(false); bt_cut.setEnabled(false); me3.setEnabled(false); //复制 popupMenu_Copy.setEnabled(false); bt_copy.setEnabled(false); me5.setEnabled(false); //删除 popupMenu_Delete.setEnabled(false); } else { me2.setEnabled(true); //剪切 popupMenu_Cut.setEnabled(true); bt_cut.setEnabled(true); me3.setEnabled(true); //复制 popupMenu_Copy.setEnabled(true); bt_copy.setEnabled(true); me5.setEnabled(true); //删除 popupMenu_Delete.setEnabled(true); } //通过判断系统剪贴板判定粘贴功能可用性判断 Transferable contents = clipBoard.getContents(this); if (contents == null) { me4.setEnabled(false); popupMenu_Paste.setEnabled(false); bt_paste.setEnabled(false); } else { me4.setEnabled(true); popupMenu_Paste.setEnabled(true); bt_paste.setEnabled(true); } }//方法checkMenuItemEnabled()结束//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$实现MouseListener接口中的方法 public void mouseClicked(MouseEvent e) { checkMenuItemEnabled(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { checkMenuItemEnabled(); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) {//显示右键菜单 if (e.isPopupTrigger())// getY() 返回事件相对于源组件的垂直 y 坐标。 int getYOnScreen() 返回事件的绝对垂直 y 坐标。 //此处用前者会出现菜单位置问题 { popupMenu.show(this, e.getXOnScreen(), e.getYOnScreen()); } }//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$实现DocumentListener接口中的方法 public void changedUpdate(DocumentEvent arg0) { me1.setEnabled(true); popupMenu_Undo.setEnabled(true); bt_undo.setEnabled(true); } public void insertUpdate(DocumentEvent arg0) { me1.setEnabled(true); popupMenu_Undo.setEnabled(true); bt_undo.setEnabled(true); } public void removeUpdate(DocumentEvent arg0) { me1.setEnabled(true); popupMenu_Undo.setEnabled(true); bt_undo.setEnabled(true); }//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$实现Transferable接口的方法 public Object getTransferData(DataFlavor arg0) throws UnsupportedFlavorException, IOException { // TODO 自动生成方法存根 return null; } public DataFlavor[] getTransferDataFlavors() { // TODO 自动生成方法存根 return null; } public boolean isDataFlavorSupported(DataFlavor arg0) { // TODO 自动生成方法存根 return false; }}//DaveNotepad类结束$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$class JAVAFileFilter extends FileFilter {//实现文件过滤 String ext; public JAVAFileFilter(String ext) { this.ext = ext; } public boolean accept(File file) { if (file.isDirectory()) { return true; } String fileName = file.getName(); int index = fileName.lastIndexOf('.'); if (index > 0 && index < fileName.length() - 1) { String extension = fileName.substring(index + 1).toLowerCase(); if (extension.equals(ext)) { return true; } } return false; } public String getDescription() { if (ext.equals("txt")) { return "记事本文件(*.txt)"; } if (ext.equals("c")) { return "C源文件 (*.c)"; } if (ext.equals("cpp")) { return "C++源文件(*.cpp)"; } if (ext.equals("sql")) { return "SQL文件(*.sql)"; } if (ext.equals("doc")) { return "Word文档(*.doc)"; } if (ext.equals("java")) { return "JAVA源文件 (*.java)"; } if (ext.equals("class")) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -