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

📄 dreamtimesnotepad.java

📁 能实现记事本的基本功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
*********************************************************************
*                                  * 
* 一个简单的文本编辑器。                      *
* 一、该本编辑器具有读出、写入、编辑文本文件的基本功能。      *
* 二、可以设定文字颜色、和编辑区域背景颜色等基本功能!        *
* 三、新增了撤消的功能。(只能撤消一次,将在以后完善)       *
* 四、实现了简单的打印的功能。                   *
* 五、实现了右键弹出菜单和工具条。                 *
* 六、实现了简单的查找功能。                    *
* 七、新增文件状态判断的功能。在打开新文件、新建新文件以及退出程序时*
* 能够提示用户保存还没有保存的文件。                *
*                                   *
*                                   *
*    该程序可以自由复制和传播                    *
*    请你保留作者的版权                        *
*    欢迎提出意见以便程序的完善                   *
*                                   *
*    程序制作:  皮志平                         *
*          		                                        *
*     		                                                        *
*      														        *
*                                   *
*********************************************************************
*/

	package cn.freeage.notepad;
	import java.awt.*;
	import java.awt.event.*;    //导入java系统类
	import java.io.*;
	import java.util.*;
	import java.awt.print.*;
	import javax.swing.*;
	import javax.swing.event.*;
	import javax.swing.text.*;
	import javax.swing.undo.*;
	
	@SuppressWarnings("serial")
	public class DreamTimesNotePad extends JFrame  
	                            implements ActionListener,
	                            MouseListener,
	                            DocumentListener {
	                            	
	JFrame f;  
	JMenuItem New, Open,Save, SaveAs,Print,PageSetup,Exit, //定义菜单
	        Undo,Copy,Paste,Cut,SelectAll, Delete,
	        Find,FindNext,
	        mFont, fontColor,backColor,
	        About,
	        pUndo,pNew,pCopy,pPaste,pCut,pSelectAll, pDelete; 
	                                     	 
	File file = null;                                     //文件对象
	String fns = "新文件";                                //文件名
	JPopupMenu pm = new JPopupMenu();                                     
	JFileChooser fc = new JFileChooser();                 //文件选择对话框
	JColorChooser cc = new JColorChooser();               //颜色选择对话框  
	JTextArea text;                                       //文本域对象
	PrinterJob prt = PrinterJob.getPrinterJob();          //打印对象
	Font defaultFont = new Font("Courier", Font.PLAIN,16);//默认字体                          	
	Font textfont;
	Color fcolor,bcolor;                                  //颜色变量
	GraphicsEnvironment ge = GraphicsEnvironment.
	getLocalGraphicsEnvironment();
	Color scolor1 = new Color(130, 6, 254);
	Color scolor2 = new Color(204,0,204);   
	Toolkit tk = Toolkit.getDefaultToolkit();            //创建工具集对象
	Dimension  sSize  =  tk.getScreenSize();             //得到屏幕的尺寸
	UndoManager undo = new UndoManager();
	UndoableEditListener undoHandler = new UndoHandler();
	JLabel statusFile;
	static int foundCount = 0;
	int FindStartPos = 0;
	boolean beginTextListener = true, isNewFile;
	boolean findingLoop = true;
	
	
	
	      
	public static void main(String[] args) {
	try {
	  //使用Swing 提供的不同的界面,本例使用的是window界面
 //UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
 //UIManager.setLookAndFeel("javax.swing.plaf.metextl.MetextlLookAndFeel");
   UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
	} catch(Exception e) { }
	 Locale.setDefault(Locale.ENGLISH);
	 Locale.setDefault(Locale.CHINA);
	 DreamTimesNotePad me = new DreamTimesNotePad();
	 me.windowLayout();
	}    
	
	public void windowLayout() {    	        	      	      
	    f = new JFrame();                          //定义窗体
	    f.setIconImage(Iconlogo.getImage());       //设定窗体图标
	    //设定窗体标题
	    f.setTitle("记事本 - [新文件]"); 
	    //设定窗体的布局格式
	    f.getContentPane().setLayout(new BorderLayout(5, 5));
	    f.setSize(600,700);                        //设定窗体的大小
	    Dimension  fSize  =  f.getSize();          //得到窗体的大小
	    //以下语句实现窗体居中显示
	    if(fSize.height  >  sSize.height){
	                   fSize.height=  sSize.height;
	           }
	           if(fSize.width  >  sSize.width){
	                   fSize.width  =  sSize.width;
	           }
	    int x = (sSize.width - fSize.width)/2;
	    int y = (sSize.height - fSize.height)/2;
	    //创建状态栏面板
	    JPanel p = new JPanel();
	    //状态栏信息标签
	    JLabel label0 = new JLabel("文件状态:");
	    statusFile = new JLabel("新文件!");
	    JLabel label1 = new JLabel("      程序制作:皮志平  ");
	    JLabel label2 = new JLabel("      http://www.freeage.cn");
	    JLabel label3 = new JLabel("          ");
	    JLabel label4 = new JLabel(Iconlogo);
	    label0.setForeground(scolor2);
	    statusFile.setForeground(scolor2);
	    label1.setForeground(scolor1);                //设置标签字体颜色
	    label2.setForeground(scolor1);
	    label3.setForeground(scolor1);
	    text = new JTextArea();                       //创建文本域对象
	    text.setFont(defaultFont);                    //设置文本域的字体
	    text.getDocument().addUndoableEditListener(undoHandler);
	    text.getCaret().setVisible(true);
	    text.addMouseListener(this);
	    text.getDocument().addDocumentListener(this);
	    text.getDocument().addUndoableEditListener(undoHandler);
	    JScrollPane scroller = new JScrollPane(text); //加入滚动条
	    f.setLocation(x,y);
	    
	    p.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 0));
	    p.add(label0);
	    p.add(statusFile);
	    p.add(label1);
	    p.add(label2);
	    p.add(label3);
	    p.add(label4);
	    
	    // 建立主菜单,并设定快捷键
	    JMenuBar mb = new JMenuBar();
	
	    JMenu File = new JMenu("文件(F)",true);  
	    File.setMnemonic('F');
	    JMenu Edit = new JMenu("编辑(E)",true);
	    Edit.setMnemonic('E');
	    JMenu Search = new JMenu("查找(S)",true);
	    Search.setMnemonic('S');
	    JMenu Format = new JMenu("格式(O)",true);
	    Format.setMnemonic('O');
	    JMenu Help  = new JMenu("帮助(H)",true);
	    Help.setMnemonic('H');
	   
	    //建立各个主菜单的的子菜单并设定快捷键
	    //分别加入各个子菜单的事件监听
	    New = new JMenuItem(" 新建",new ImageIcon("images/snew.gif"));
	    New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, 
	    InputEvent.CTRL_MASK));
	    New.addActionListener(this);
	     
	    Open = new JMenuItem(" 打开",new ImageIcon("images/sopen.gif"));
	    Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 
	    InputEvent.CTRL_MASK));
	    Open.addActionListener(this);
	    
	    Save = new JMenuItem(" 保存",new ImageIcon("images/ssave.gif"));
	    Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 
	    InputEvent.CTRL_MASK));
	    Save.addActionListener(this);
	    
	    SaveAs = new JMenuItem(" 另存为",new ImageIcon("images/ssave.gif"));
	    SaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2,0));
	    SaveAs.addActionListener(this);
	    
	    PageSetup = new JMenuItem(" 打印设置",new ImageIcon("images/sprint.gif"));
	    PageSetup.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, 
	    InputEvent.CTRL_MASK + InputEvent.ALT_MASK));
	    PageSetup.addActionListener(this);
	    PageSetup.setEnabled(true);
	    
	    
	    Print = new JMenuItem(" 打印",new ImageIcon("images/sprint.gif"));
	    Print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, 
	    InputEvent.CTRL_MASK));
	    Print.addActionListener(this);
	    
	    
	    Exit = new JMenuItem(" 退出",new ImageIcon("images/sexit.gif"));
	    Exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, 
	    InputEvent.ALT_MASK));
	    Exit.addActionListener(this);
	    
	    Undo = new JMenuItem("撤消",new ImageIcon("images/sundo.gif"));
	    Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, 
	    InputEvent.CTRL_MASK));
	    Undo.addActionListener(this);
	    Undo.setEnabled(false);
	    
	    Copy = new JMenuItem(" 复制",new ImageIcon("images/scopy.gif"));
	    Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 
	    InputEvent.CTRL_MASK));
	    Copy.addActionListener(this);
	    
	    Paste = new JMenuItem(" 粘贴",new ImageIcon("images/spaste.gif"));
	    Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 
	    InputEvent.CTRL_MASK));
	    Paste.addActionListener(this);
	    
	    Cut = new JMenuItem(" 剪切",new ImageIcon("images/scut.gif"));
	    Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, 
	    InputEvent.CTRL_MASK));
	    Cut.addActionListener(this);
	    
	    SelectAll = new JMenuItem("   全选");
	    SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, 
	    InputEvent.CTRL_MASK));
	    SelectAll.addActionListener(this);
	    
	    Delete = new JMenuItem(" 删除",new ImageIcon("images/sdelete.gif"));
	    Delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, 
	    InputEvent.CTRL_MASK));
	    Delete.addActionListener(this);
	    
	    Find = new JMenuItem(" 查找",new ImageIcon("images/sfind.gif"));
	    Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 
	    InputEvent.CTRL_MASK));
	    Find.addActionListener(this);
	    
	    FindNext = new JMenuItem(" 查找下一个",new ImageIcon("images/sfindnext.gif"));
	    FindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
	    FindNext.addActionListener(this);
	    
	    mFont = new JMenuItem("字体");
	    mFont.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 
	    InputEvent.CTRL_MASK + InputEvent.ALT_MASK));
	    mFont.addActionListener(this);
	
	    fontColor = new JMenuItem("字体颜色");
	    fontColor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
	    InputEvent.ALT_MASK));
	    fontColor.addActionListener(this);
	    
	    backColor = new JMenuItem("背景颜色");
	    backColor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 
	    InputEvent.CTRL_MASK + InputEvent.ALT_MASK));
	    backColor.addActionListener(this);
	            
	    About = new JMenuItem("关于",new ImageIcon("images/shelp.gif"));
	    About.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
	    About.addActionListener(this);
	    
	    //创建弹出菜单
	    pUndo = new JMenuItem("   撤消",new ImageIcon("images/sundo.gif"));
	    pUndo.addActionListener(this);
	    pUndo.setEnabled(false);
	    
	    pCopy = new JMenuItem(" 复制",new ImageIcon("images/scopy.gif"));
	    pCopy.addActionListener(this);
	    
	    pPaste = new JMenuItem(" 粘贴",new ImageIcon("images/spaste.gif"));
	    pPaste.addActionListener(this);
	    
	    pCut = new JMenuItem(" 剪切",new ImageIcon("images/scut.gif"));
	    pCut.addActionListener(this);
	    
	    pDelete = new JMenuItem(" 删除",new ImageIcon("images/sdelete.gif"));
	    pDelete.addActionListener(this);
	    
	    pSelectAll = new JMenuItem("    全选");
	    pSelectAll.addActionListener(this);
	    
	    
	    //创建工具条
	    JToolBar toolbar = new JToolBar(); 
	    JButton toolnew = new JButton(Iconnew);
	    toolnew.setToolTipText("新建 (Ctrl+N)");
	    toolnew.addActionListener(new ActionListener() {  //加入事件监听
	      public void actionPerformed(ActionEvent e) {
	            setnew();                  //调用 newFile() 建立新文件
	        }
	    });
	    
	    JButton toolopen = new JButton(Iconopen);
	    toolopen.setToolTipText("打开 (Ctrl+O)");
	    toolopen.addActionListener(new ActionListener() {  //加入事件监听
	      public void actionPerformed(ActionEvent e) {
	            setopen();                //调用 openFile() 打开文件
	        }
	    });
	    
	    JButton toolsave = new JButton(Iconsave);
	    toolsave.setToolTipText("保存 (Ctrl+S)");
	    toolsave.addActionListener(new ActionListener() {  //加入事件监听
	      public void actionPerformed(ActionEvent e) {
	            if(file != null) {
	            saveFile();
	             }      
	            else {
	            saveNewFile(); 
	  	       }                               //调用 saveFile() 保存文件
	        }
	    });
	    
	    JButton toolprint = new JButton(Iconprint);
	    toolprint.setToolTipText("打印 (Ctrl+P)");
	    toolprint.addActionListener(new ActionListener() { //加入事件监听
	      public void actionPerformed(ActionEvent e) {
	            print();         //调用 print() 进行打印
	        }
	    });
	    
	    JButton toolcopy = new JButton(Iconcopy);
	    toolcopy.setToolTipText("复制 (Ctrl+C)");
	    toolcopy.addActionListener(new ActionListener() { //加入事件监听
	      public void actionPerformed(ActionEvent e) {
	            text.copy();     //调用text的copy()方实现复制
	        }
	    });

⌨️ 快捷键说明

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