package Edit; import Find.FindAndReplace; import Main.*; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.util.Calendar; import java.util.regex.Pattern; import javax.swing.JOptionPane; /** *@description 整合,实现编辑菜单下的所有功能 * @author 小路 * @date 2013-05-07 */ public class Edit { private MainFrame mf; //获取系统剪切板 private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); private StringSelection contents; public Edit(MainFrame mf) { this.mf = mf; } //返回系统剪切板内是否保存的有复制或剪切的文字信息 public Boolean isCopyedOrCut() { String str = null; try { str = (String)clipboard.getData(DataFlavor.stringFlavor); } catch (Exception ex) { ex.printStackTrace(); } return str!=null||str!="";//如果系统剪切板中存在内容则返回true } //实现撤销方法,包括右键菜单中的撤销方法 public void Cancle() { if(mf.get_undo().canUndo()) { mf.get_undo().undo(); } } //实现恢复方法,包括右键菜单中的恢复方法 public void Recover() { if(mf.get_undo().canRedo()) { mf.get_undo().redo(); } } //实现剪切方法,包括右键菜单中的剪切方法 public void Cut() { String str = mf.getMainText().getSelectedText().replaceAll("\n", ""); contents = new StringSelection(str);//将string对象封装成StringSelection对象 clipboard.setContents(contents, null); mf.getMainText().replaceSelection(""); } //实现复制方法,包括右键菜单中的复制方法 public void Copy() { String str = mf.getMainText().getSelectedText().replaceAll("\n", ""); contents = new StringSelection(str); clipboard.setContents(contents, null); } //是按粘贴方法,包括右键菜单中的粘贴方法 public void Paste() { if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)) { try { //取出剪切板中的内容 String content = (String)clipboard.getData(DataFlavor.stringFlavor); if(mf.getMainText().getSelectedText()!=null)//如果粘贴的时候选中了文字,则覆盖文字 { mf.getMainText().replaceSelection(content); } else//如果没有选中文字,则插入文字 { mf.getMainText().insert(content, mf.getMainText().getCaretPosition()); } } catch (Exception ex) { ex.printStackTrace(); } } } //实现删除方法,包括右键菜单中的删除方法 public void Delete() { mf.getMainText().replaceSelection("");//把选中的文字替换为空 } //实现查找方法 public void Find() { FindAndReplace far = new FindAndReplace(mf); far.showFindAndReplace(mf, "查找"); } //实现查找下一个方法 public void FindNext() { FindAndReplace far = new FindAndReplace(mf); far.showFindAndReplace(mf, "查找下一个"); } //实现替换方法 public void Replace() { FindAndReplace far = new FindAndReplace(mf); far.showFindAndReplace(mf, "替换"); } //实现转到方法 public void SwitchTo() { String [] text = mf.getMainText().getText().split("\n"); String str = JOptionPane.showInputDialog(mf, "行数(L):","转到下列行", JOptionPane.QUESTION_MESSAGE); if(str!=null)//str==null是点击了取消按钮触发的事件 { Pattern pattern = Pattern.compile("[0-9]"); if(str.trim().length()!=0&&pattern.matcher(str).matches()) { int row = Integer.parseInt(str); if(row>=1&&row<=text.length) { int pos = 0; for(int i = 0;i<row-1;i++) { pos += text[i].length() + 1; } mf.getMainText().setCaretPosition(pos); } else { JOptionPane.showMessageDialog(mf, "列数超出范围!", "错误提示", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(mf, "无效的字符!", "错误提示", JOptionPane.ERROR_MESSAGE); } } } //实现全选方法,包括右键菜单中的全选方法 public void SelectAll() { mf.getMainText().selectAll(); } //实现日期/时间方法 public void insetDatetime() { Calendar calendar = Calendar.getInstance(); int pos = mf.getMainText().getCaretPosition();//获取光标所在位置 mf.getMainText().insert(calendar.getTime().toString(), pos); } //右键菜单中的打开软键盘方法 public void OpenKeyboard() { } //右键菜单中的关闭软键盘方法 public void CloseKeyboard() { } }

xxxjjn LV1
2024年6月16日
queueandstack LV3
2022年12月2日
沙发床上的 LV1
2022年5月30日
183077946781 LV1
2021年11月15日
尹恒yingying LV18
2021年10月12日
任天晴 LV1
2021年7月10日
ncy123456789 LV6
2021年7月6日
毫无qiushengyu LV2
2021年7月2日
祁康伟 LV1
2021年7月1日
周星星哥哥在外面 LV1
2021年6月15日