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
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日