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

📄 notebook.java

📁 用java写的记事本 基本功能与windows自带的相同
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package notebook;

import java.awt.BorderLayout;


import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.PrintJob;
import java.awt.ScrollPane;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.awt.event.*;
import java.awt.print.PrinterJob;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;

import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;








public class NoteBook extends JFrame implements DocumentListener{
         
         NoteBook noteBook;
	     String filename = "无标题";
	     boolean alreadychange = false;
	     boolean alreadysave = false;
	     boolean alreadyfind = false;
	     File selectFile;
	     Font font = new Font(Font.DIALOG,Font.PLAIN,13); //设定字体格式
	     
	     //定义菜单按钮 
	   	 JPanel panel ;
	   	 JPanel statusPanel;
	     JMenuBar menuBar;
	     JScrollPane scrollPane;
	     BorderLayout borderLayout ;
	     JLabel jLabel;
	     JPopupMenu pMenu;
	     JFileChooser jFileChooser;
	     
         JMenu fileMenu;
         JMenuItem newMenuItem;
         JMenuItem openMenuItem;
         JMenuItem saveMenuItem;
         JMenuItem saveAsMenuItem;
         JMenuItem pageMenuItem;
         JMenuItem printMenuItem;
         JMenuItem exitMenuItem;
         
         JMenu editMenu;
         JMenuItem undoMenuItem;
         JMenuItem cutMenuItem;
         JMenuItem copymMenuItem;
         JMenuItem pasteMenuItem;
         JMenuItem delMenuItem;
         JMenuItem seachMenuItem;
         JMenuItem nextMenuItem;
         JMenuItem replaceMenuItem;
         JMenuItem gotoMenuItem;
         JMenuItem allMenuItem;
         JMenuItem dateMenuItem;
         
         JMenu formatMenu;
         JCheckBoxMenuItem newlineMenuItem;
         JMenuItem fontMenuItem;
         
         
         JMenu seeMenu;
         JCheckBoxMenuItem statusMenuItem;
         
         JMenu helpMenu;
         JMenuItem helpMenuItem;
         JMenuItem aboutMenuItem;
         
         JMenuItem popMenuUndo;
	     JMenuItem popMenuCopy ;
	     JMenuItem popMenuPaste;
	     JMenuItem popMenuCut;
	     JMenuItem popMenuDel ;
	     JMenuItem popMenuSelectAll;
         
	     JTextArea textArea;
	     JPopupMenu popupMenu;	     
	     ScrollPane sPane;
	     BufferedReader bufferedReader;
		 String strFind;
		 int FindStartPos;
		 
		 //撤销管理器
		 UndoManager undo = new UndoManager();
		 UndoableEditListener undoHandler = new UndoHandler();
		 PrinterJob job;
	     
		 
	     
	    
	    
	    public NoteBook(){
	    	super();
	    	initialize();
	    }
	    
	    public void initialize(){
	    	borderLayout =new BorderLayout(); 	
	     	
	    	textArea = new JTextArea();
	    	jLabel = new JLabel();
	    	panel =new JPanel();
	    	//右键菜单设置
	    	popupMenu = new JPopupMenu(); 
	        popMenuUndo = new JMenuItem("撤销"); 
	        popMenuCopy = new JMenuItem("复制"); 
	        popMenuPaste = new JMenuItem("粘贴"); 
	        popMenuCut = new JMenuItem("剪贴"); 
	        popMenuDel = new JMenuItem("删除"); 
	        popMenuSelectAll = new JMenuItem("全选"); 
	    	
	    	statusPanel = new JPanel();
	    	scrollPane =new JScrollPane(textArea);	 
	    	statusPanel.add(jLabel);
	    	statusPanel.setPreferredSize(new Dimension(600, 15));
	    	//布局
	   		panel.setLayout(borderLayout);
	   		panel.add(statusPanel,borderLayout.SOUTH); 
	    	panel.add(scrollPane,borderLayout.CENTER);	
	    	//文档侦听
	    	textArea .getDocument().addDocumentListener(this);
	    	textArea.getDocument().addUndoableEditListener(undoHandler);
	    	
	    
	    	
	    	
	    	
	        menuBar = new JMenuBar();
	    	
	        fileMenu = new JMenu("文件(F)");
	        newMenuItem = new JMenuItem("新建(N)");	      
	        newMenuItem.setMnemonic('N');
	        newMenuItem.setAccelerator(KeyStroke.getKeyStroke('N',java.awt.Event.CTRL_MASK,true));
	        newMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		
	        		if(alreadychange == false||textArea.getText()==null){
	        			textArea.setText("");
	        			filename = "无标题";
	        			NoteBook.this.setTitle(filename+"-记事本"); 
	        		 }else{ 
	        			 if(alreadysave == true){
	        				 textArea.setText("");
	        				 filename = "无标题";
	        				 
	        				 NoteBook.this.setTitle(filename+"-记事本"); 
	        			     }  else{
	        			    	 int i = JOptionPane.showConfirmDialog(null, "文件"+filename+"的文档已经改变,想保存文件吗?", "记事本",JOptionPane.YES_NO_CANCEL_OPTION ,2 );
	        		                if(i == JOptionPane.YES_OPTION){
	        		        	                  save();
	        		               } if(i == JOptionPane.NO_OPTION){
	        			                       textArea.setText("");
	        			                       filename = "无标题";
	        			                       NoteBook.this.setTitle(filename+"-记事本"); 
	        			             } if(i == JOptionPane.CANCEL_OPTION){
	        			            	       return;
	        			             }
	        			         }
	        		     }
	        		}	        			        	
	        });           	       
	       
	        openMenuItem = new JMenuItem("打开(O)...");  
	        openMenuItem.setMnemonic('O');
	        openMenuItem.setAccelerator(KeyStroke.getKeyStroke('O',java.awt.Event.CTRL_MASK,true));
	        openMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		
	        		if(textArea.getText().equals("")){
	        			  open();
	        		}	           else{
	        		                      if(alreadychange == true && alreadysave == false){
	        		                    	  int i = JOptionPane.showConfirmDialog(null, "文件"+filename+"的文档已经改变,想保存文件吗?", "记事本",JOptionPane.YES_NO_CANCEL_OPTION ,2 );
	        		                          if(i == JOptionPane.YES_OPTION){
	        		                  	                   save();
	        		                         } if(i == JOptionPane.NO_OPTION){
	        		          	                           open();
	        		          	             } if(i == JOptionPane.CANCEL_OPTION){
	        		          	            	           return;
	        		          	             }
	        		                      }
	        		
	        		                         else {
						        		
	        		                                  open();
	        			
	        		       }
	        		}
	        	}
	        }
	       );
	        
	        
	        
	        saveMenuItem = new JMenuItem("保存(S)");
	        saveMenuItem.setMnemonic('S');
	        saveMenuItem.setAccelerator(KeyStroke.getKeyStroke('S',java.awt.Event.CTRL_MASK,true));
	        saveMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		  
						save();
					}
	        	
	        });
	        
	        
	        
	        saveAsMenuItem = new JMenuItem("另存为(A)...");
	        saveAsMenuItem.setMnemonic('A');
	        saveAsMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		    
						saveas();
					}
	        	
	        });
	        
	        
	        
	        
	        printMenuItem = new JMenuItem("打印(P)");
	        printMenuItem.setMnemonic('P');
	        printMenuItem.setAccelerator(KeyStroke.getKeyStroke('P',java.awt.Event.CTRL_MASK,true));
	        printMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e) {
	        		HashPrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
					job.printDialog(attributeSet);  //创建打印属性
				}
	        });
	        
	        
	        
	        
	        exitMenuItem = new JMenuItem("退出(X)");
	        exitMenuItem.setMnemonic('X');
	        exitMenuItem.setAccelerator(KeyStroke.getKeyStroke('X', java.awt.Event.CTRL_MASK,true));
	        exitMenuItem.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e) {	        		
	        		if(alreadychange == true && alreadysave == false){
	        			int i = JOptionPane.showConfirmDialog(null, "文件"+filename+"的文档已经改变,想保存文件吗?", "记事本",JOptionPane.YES_NO_CANCEL_OPTION ,2 );
                        if(i == JOptionPane.YES_OPTION){
                	                   save();
                	                   
                       } if(i == JOptionPane.NO_OPTION){
        	                          System.exit(0);
        	             } if(i == JOptionPane.CANCEL_OPTION){
        	            	          return;
        	             }
	        		}
	        		System.exit(0);
	        	}
	        });
	        
	             
	                
	        editMenu = new JMenu("编辑(E)");
	       
	        undoMenuItem = new JMenuItem("撤销(U)");
	        undoMenuItem.setMnemonic('U');
	        undoMenuItem.setAccelerator(KeyStroke.getKeyStroke('Z',java.awt.Event.CTRL_MASK,true));
	        undoMenuItem.addActionListener(new ActionListener(){				
				public void actionPerformed(ActionEvent e) {		
					undoDocument();
				}
	        	
	        });
	        
	        
	        
	        cutMenuItem = new JMenuItem ("剪贴(T)");
	        cutMenuItem.setMnemonic('T');
	        cutMenuItem.setAccelerator(KeyStroke.getKeyStroke('T',java.awt.Event.CTRL_MASK,true));
	        cutMenuItem.addActionListener(new ActionListener(){
	        		public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					textArea.cut();
				}
	        });
	        
	       
	        
	        copymMenuItem = new JMenuItem("复制(C)");
	        copymMenuItem.setMnemonic('C');
	        copymMenuItem.setAccelerator(KeyStroke.getKeyStroke('C',java.awt.Event.CTRL_MASK,true));

⌨️ 快捷键说明

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