⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notepad.java

📁 基于原本对该课题的了解
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package javaapplication6;   //import java packages  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; 	 	//"文件"的菜单项 	JMenuItem fileMenu_New,fileMenu_Open,fileMenu_Save,fileMenu_SaveAs,fileMenu_PageSetup,fileMenu_Print,fileMenu_Exit;  	//"编辑"的菜单项	 	JMenuItem editMenu_Undo,editMenu_Redo,editMenu_Cut,editMenu_Copy,editMenu_Paste,editMenu_Delete,editMenu_Find,editMenu_FindNext,editMenu_Replace,			  editMenu_GoTo,editMenu_SelectAll,editMenu_TimeDate; 			 	//"格式"的菜单项	JCheckBoxMenuItem formatMenu_LineWrap;	JMenu formatMenu_Color; 	JMenuItem formatMenu_Font,formatMenu_Color_FgColor,formatMenu_Color_BgColor; 		 	//"帮助"的菜单项 	JMenuItem helpMenu_HelpTopics,helpMenu_About; 	 	//文本编辑区域 	JTextArea editArea; 	 	//状态栏标签 	JLabel statusLabel; 	 	//弹出菜单及菜单项 	JPopupMenu popupMenu; 	JMenuItem popupMenu_Undo,popupMenu_Redo,popupMenu_Cut,popupMenu_Copy,popupMenu_Paste,popupMenu_Delete,popupMenu_SelectAll;		//系统剪贴板	Toolkit toolKit=Toolkit.getDefaultToolkit();	Clipboard clipBoard=toolKit.getSystemClipboard();		//其它变量	boolean isNewFile=true;	//是否新文件(未保存过的)	File currentFile;		//当前文件名	String oldValue;		//存放编辑区原来的内容,用于比较文本是否有改动	JButton fontOkButton;	//字体设置里的"确定"按钮				//创建撤消操作管理器/*	protected UndoManager undo = new UndoManager(); 	protected UndoableEditListener undoHandler = new UndoHandler();*/		//设置编辑区默认字体 	protected Font defaultFont=new Font("宋体",Font.PLAIN,12);			//构造函数开始 	public Notepad()	{		super("欢迎使用");				//获取容器		Container container=getContentPane();		//创建菜单条		JMenuBar menuBar = new JMenuBar(); 						//创建文件菜单及菜单项并注册事件监听		JMenu fileMenu = new JMenu("文件(F)", true); 		fileMenu.setMnemonic('F'); 		fileMenu_New = new JMenuItem("新建(N)", 'N'); 		fileMenu_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); 		fileMenu_New.addActionListener(this); 		fileMenu_Open = new JMenuItem("打开(O)...", 'O'); 		fileMenu_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK)); 		fileMenu_Open.addActionListener(this); 		fileMenu_Save = new JMenuItem("保存(S)", 'S'); 		fileMenu_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); 		fileMenu_Save.addActionListener(this);                 		fileMenu_SaveAs = new JMenuItem("另存为(A)...", 'A'); 		fileMenu_SaveAs.addActionListener(this);                 		fileMenu_Exit = new JMenuItem("退出(X)",'X'); 		fileMenu_Exit.addActionListener(this); 	                		//创建编辑菜单及菜单项并注册事件监听		JMenu editMenu = new JMenu("编辑(E)", true);		editMenu.setMnemonic('E'); 		editMenu.addActionListener(new ActionListener()			{				public void actionPerformed(ActionEvent e){				}			}		);				editMenu_Cut = new JMenuItem("剪切(T)",'T'); 		editMenu_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK)); 		editMenu_Cut.addActionListener(this); 		editMenu_Copy = new JMenuItem("复制(C)",'C'); 		editMenu_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)); 		editMenu_Copy.addActionListener(this); 		editMenu_Paste = new JMenuItem("粘贴(P)",'P'); 		editMenu_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK)); 		editMenu_Paste.addActionListener(this);				editMenu_Delete = new JMenuItem("删除(L)",'L'); 		editMenu_Delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); 		editMenu_Delete.addActionListener(this); 				editMenu_Find = new JMenuItem("查找(F)...",'F'); 		editMenu_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK)); 		editMenu_Find.addActionListener(this);				editMenu_FindNext = new JMenuItem("查找下一个(N)",'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);		//创建格式菜单及菜单项并注册事件监听		JMenu formatMenu = new JMenu("格式(O)", true);		formatMenu.setMnemonic('O'); 				formatMenu_LineWrap = new JCheckBoxMenuItem("自动换行(W)"); 		formatMenu_LineWrap.setMnemonic('W'); 		formatMenu_LineWrap.setState(true); 		formatMenu_LineWrap.addActionListener(this); 		formatMenu_Font = new JMenuItem("字体(F)...",'F');		formatMenu_Font.addActionListener(this);		formatMenu_Color = new JMenu("设置颜色"); 		formatMenu_Color_FgColor=new  JMenuItem("字体颜色");		formatMenu_Color_FgColor.addActionListener(this);		formatMenu_Color_BgColor=new JMenuItem("背景颜色");		formatMenu_Color_BgColor.addActionListener(this);                addWindowListener(new closeWindow());                                		//向菜单条添加"文件"菜单及菜单项 		menuBar.add(fileMenu); 		fileMenu.add(fileMenu_New); 		fileMenu.add(fileMenu_Open); 		fileMenu.add(fileMenu_Save); 		fileMenu.add(fileMenu_SaveAs); 		fileMenu.addSeparator();		//分隔线				fileMenu.add(fileMenu_Exit); 				//向菜单条添加"编辑"菜单及菜单项 		menuBar.add(editMenu); 		 		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.addSeparator();  		//分隔线		editMenu.add(editMenu_SelectAll); 		editMenu.add(editMenu_TimeDate);				//向菜单条添加"格式"菜单及菜单项				menuBar.add(formatMenu); 				formatMenu.add(formatMenu_Font); 		formatMenu.addSeparator();		formatMenu.add(formatMenu_Color);		formatMenu_Color.add(formatMenu_Color_FgColor);		formatMenu_Color.add(formatMenu_Color_BgColor);                 		//向窗口添加菜单条						this.setJMenuBar(menuBar);						//创建文本编辑区并添加滚动条		editArea=new JTextArea(20,50);		JScrollPane scroller=new JScrollPane(editArea);		scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);		container.add(scroller,BorderLayout.CENTER);//向容器添加文本编辑区		editArea.setWrapStyleWord(true);			//设置单词在一行不足容纳时换行		editArea.setLineWrap(true);					//设置文本编辑区自动换行默认为true,即会"自动换行"		editArea.setFont(defaultFont);				//设置编辑区默认字体                editArea.setBackground(Color.white);		//设置编辑区默认背景色                editArea.setForeground(Color.black);		//设置编辑区默认前景色		oldValue=editArea.getText();				//获取原文本编辑区的内容										//创建右键弹出菜单		popupMenu=new JPopupMenu();		popupMenu_Undo=new JMenuItem("撤消(U)",'U');		popupMenu_Redo=new JMenuItem("重做(R)",'R');		popupMenu_Cut =new JMenuItem("剪切(T)",'T');		popupMenu_Copy=new JMenuItem("复制(C)",'C');		popupMenu_Paste=new JMenuItem("粘贴(P)",'P');		popupMenu_Delete=new JMenuItem("删除(D)",'D');		popupMenu_SelectAll=new JMenuItem("全选(A)",'A');					popupMenu_Undo.setEnabled(false);			//撤消选项初始设为不可用		popupMenu_Redo.setEnabled(false);			//重做选项初始设为不可用				//向右键菜单添加菜单项和分隔符		popupMenu.add(popupMenu_Undo);		popupMenu.add(popupMenu_Redo);		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_Redo.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)				{					checkForTriggerEvent(e);				}								public void mouseReleased(MouseEvent e)				{					checkForTriggerEvent(e);				}								private void checkForTriggerEvent(MouseEvent e)				{					if(e.isPopupTrigger())						popupMenu.show(e.getComponent(),e.getX(),e.getY());					editArea.requestFocus();	//编辑区获取焦点				}							});																									//创建和添加状态栏		statusLabel=new JLabel(" 按F1获取帮助");		container.add(statusLabel,BorderLayout.SOUTH);				//改变标题栏窗口左侧默认图标			Toolkit tk=Toolkit.getDefaultToolkit();       		Image   image=tk.createImage("Icons/notepad.gif");     		this.setIconImage(image);  		  		//设置窗口在屏幕上的位置、大小和可见性 		this.setLocation(100,100);		this.setSize(650,550);		this.setVisible(true);				editArea.requestFocus();			 		}					/*构造函数Notepad结束*/					//查找与替换功能	public void mySearch(){				final JDialog findDialog=new JDialog(this,"查找与替换",true);			Container con=findDialog.getContentPane();		con.setLayout(new FlowLayout(FlowLayout.LEFT));				JLabel searchContentLabel=new JLabel("查找内容(N) :");		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 && editArea.getSelectedText()!=null) 					editArea.replaceSelection(""); 				if(replaceText.getText().length() > 0 && editArea.getSelectedText()!= null) 					editArea.replaceSelection(replaceText.getText()); 			}		});				//"替换全部"按钮的事件处理		replaceAll.addActionListener(new ActionListener(){			public void actionPerformed(ActionEvent e){								editArea.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=editArea.getCaretPosition();					String str1, str2, str3, str4, strA, strB; 					str1 = editArea.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(editArea.getSelectedText()==null){														a = strA.lastIndexOf(strB, FindStartPos-1);						}						else						{							a = strA.lastIndexOf(strB, FindStartPos-findText.getText().length()-1);							}					}					else if(down.isSelected())						{							if(editArea.getSelectedText()==null){							a = strA.indexOf(strB, FindStartPos);							}							else							{							a=strA.indexOf(strB,FindStartPos-findText.getText().length()+1);							}												}										if(a > -1) { 						if(up.isSelected()){							editArea.setCaretPosition(a);							b = findText.getText().length(); 							editArea.select(a, a + b); 							}						else if(down.isSelected()){							editArea.setCaretPosition(a); 							b = findText.getText().length(); 							editArea.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 && editArea.getSelectedText() != null){						editArea.replaceSelection("");						replaceCount++;					} 										if(replaceText.getText().length() > 0 && editArea.getSelectedText() != null) 					{						editArea.replaceSelection(replaceText.getText()); 						replaceCount++;					}				}//end while			}		});	/*"替换全部"按钮的事件处理结束*/				//"查找下一个"按钮事件处理		searchNext.addActionListener(new ActionListener(){								public void actionPerformed(ActionEvent e){											int a = 0, b =0; 					int FindStartPos=editArea.getCaretPosition();					String str1, str2, str3, str4, strA, strB; 					str1 = editArea.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(editArea.getSelectedText()==null){														a = strA.lastIndexOf(strB, FindStartPos-1);						}						else{						a = strA.lastIndexOf(strB, FindStartPos-findText.getText().length()-1);							}					}					else if(down.isSelected()){													if(editArea.getSelectedText()==null){							a = strA.indexOf(strB, FindStartPos);						}						else{							a=strA.indexOf(strB,FindStartPos-findText.getText().length()+1);						}												}										if(a > -1) { 						if(up.isSelected()){							editArea.setCaretPosition(a);							b = findText.getText().length(); 							editArea.select(a, a + b); 						}						else if(down.isSelected()){							editArea.setCaretPosition(a); 							b = findText.getText().length(); 							editArea.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();				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -