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

📄 notepad.java

📁 汉诺塔自动演示,可以由机器自动演示和人工自由进行实验.
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
		boldButton.addActionListener(this);
		italicButton.addActionListener(this);
		fgcolorButton.addActionListener(this);
		bgcolorButton.addActionListener(this);	
		helpButton.addActionListener(this);
		
		//设置按钮提示文字
		newButton.setToolTipText("新建");
		openButton.setToolTipText("打开");
		saveButton.setToolTipText("保存");
		saveAsButton.setToolTipText("另存为");
		printButton.setToolTipText("打印");
		undoButton.setToolTipText("撤消");
		redoButton.setToolTipText("重做");
		cutButton.setToolTipText("剪切");
		copyButton.setToolTipText("复制");
		pasteButton.setToolTipText("粘贴");
		deleteButton.setToolTipText("删除所选");
		searchButton.setToolTipText("查找与替换");
		timeButton.setToolTipText("插入时间/日期");
		fontButton.setToolTipText("设置字体");
		boldButton.setToolTipText("粗体");
		italicButton.setToolTipText("斜体");
		fgcolorButton.setToolTipText("设置字体颜色");
		bgcolorButton.setToolTipText("设置背景颜色");		
		helpButton.setToolTipText("帮助");
		
		//设置撤消、重做、剪切、复制、粘贴、删除等工具栏按钮不可用时的图片(灰色)
		undoButton.setDisabledIcon(new ImageIcon("Icons/undo1.gif"));
		redoButton.setDisabledIcon(new ImageIcon("Icons/redo1.gif"));
		cutButton.setDisabledIcon(new ImageIcon("Icons/cut1.gif"));
		copyButton.setDisabledIcon(new ImageIcon("Icons/copy1.gif"));
		pasteButton.setDisabledIcon(new ImageIcon("Icons/paste1.gif"));
		deleteButton.setDisabledIcon(new ImageIcon("Icons/delete1.gif"));
		
		//向工具栏添加按钮
		toolBar.add(newButton);
		toolBar.add(openButton);
		toolBar.add(saveButton);
		toolBar.add(saveAsButton);
		toolBar.add(printButton);
		toolBar.add(undoButton);
		toolBar.add(redoButton);
		toolBar.add(cutButton);
		toolBar.add(copyButton);
		toolBar.add(pasteButton);
		toolBar.add(deleteButton);
		toolBar.add(searchButton);
		toolBar.add(timeButton);
		toolBar.add(fontButton);
		toolBar.add(boldButton);
		toolBar.add(italicButton);
		toolBar.add(fgcolorButton);
		toolBar.add(bgcolorButton);
		toolBar.add(helpButton);
		
		//向容器添加工具栏
		container.add(toolBar,BorderLayout.NORTH);
		
		//创建和添加状态栏
		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);
		
		checkMenuItemEnabled();
		editArea.requestFocus();
	
		 	
	}					/*构造函数Notepad结束*/
	
	//设置菜单项的可用性:剪切,复制,粘贴,删除功能	
	public void checkMenuItemEnabled(){
		
	/*
	 *思路:
	 *主要是通过判断编辑区是否有文本被选中来设置这些操作(剪切,复制,删除)的可用性;
	 *通过判断剪贴板信息设置粘贴选项的可用性
	 *
	 **/
	 
		String selectText=editArea.getSelectedText();
	
       	if(selectText==null)
       		{       				       				
       			editMenu_Cut.setEnabled(false);
       			popupMenu_Cut.setEnabled(false);
       			cutButton.setEnabled(false);
       			editMenu_Copy.setEnabled(false);
       			popupMenu_Copy.setEnabled(false);
       			copyButton.setEnabled(false);
       			editMenu_Delete.setEnabled(false);
       			popupMenu_Delete.setEnabled(false);
       			deleteButton.setEnabled(false);       				
       		}
       		else
       		{
       			editMenu_Cut.setEnabled(true);
       			popupMenu_Cut.setEnabled(true); 
       			cutButton.setEnabled(true);      				
       			editMenu_Copy.setEnabled(true);
       			popupMenu_Copy.setEnabled(true);
       			copyButton.setEnabled(true);
       			editMenu_Delete.setEnabled(true);
       			popupMenu_Delete.setEnabled(true);
       			deleteButton.setEnabled(true);
       		}
		
		//粘贴功能可用性判断
		Transferable contents=clipBoard.getContents(this);
		    if(contents==null) 
		    {
		       	editMenu_Paste.setEnabled(false);
		       	popupMenu_Paste.setEnabled(false);
		       	pasteButton.setEnabled(false);
		    }
			else
			{
				editMenu_Paste.setEnabled(true);
				popupMenu_Paste.setEnabled(true);
				pasteButton.setEnabled(true);
			}			   
		
	}/*方法checkMenuItemEnabled()结束*/
	
	//查找与替换功能
	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();
				}
		});
	
		//创建"查找与替换"对话框的界面
		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(2,1));
		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);
		
		//设置"查找与替换"对话框的大小、可更改大小(否)、位置和可见性
		findDialog.setSize(410,210);
		findDialog.setResizable(false);
		findDialog.setLocation(230,280);
		findDialog.setVisible(true);
		
	}			/*方法mySearch()结束*/	
	
	//实现ActionListener的事件处理方法public void actionPerformed(ActionEvent e)
	public void actionPerformed(ActionEvent e)
	{
		//新建
		if(e.getSource()==fileMenu_New||e.getSource()==newButton)
			{
				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();
									fw.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); 
						popupMenu_Undo.setEnabled(false);
						undoButton.setEnabled(false);
						editMenu_Redo.setEnabled(false); 
						popupMenu_Redo.setEnabled(false);
						redoButton.setEnabled(false);
						oldValue=editArea.getText();
					}
					
					else if(saveChoose==JOptionPane.CANCEL_OPTION)
					{
						return;
					}
				}
				
				else

⌨️ 快捷键说明

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