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

📄 texteditor.java

📁 java语言编辑的一个文本编辑器,模块清晰明了,用到JAVA的反射机制,可以给选中的单词加不同的颜色进行高亮显示.调整字符大小.
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package javadesign;
import java.awt.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileFilter;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.text.*;
import javax.swing.undo.UndoManager;
/*********************主类******************/
public class TextEditor{
    /**main()方法*/
    public static void main(String args[]) {
        new Note();
    }
}
/*************************Note类******************/
class Note {
    private File currentFile=null;
    private JFrame  frame=new JFrame("无标题 - 文字编辑");
    private JMenuBar menuBar = new JMenuBar();  //菜单栏
    private JMenu fileMenu = new JMenu("文件(F)");
    private JMenu editMenu = new JMenu("编辑(E)");
    private JMenu formatMenu = new JMenu("格式(O)");
    private JMenu helpMenu = new JMenu("帮助(H)");
    private JMenu viewMenu = new JMenu("查看(V)");
    private JToolBar toolbar = new JToolBar(); //工具条
    private JMenuItem undoItem,redoItem,findItem, findnextItem;
    private JButton newButton,openButton,saveButton,deleteButton;
    private JButton undoButton,redoButton,copyButton,cutButton,pasteButton;
    private JRadioButtonMenuItem windows,metal,motif;
    private ButtonGroup group=new ButtonGroup();
    private StyledDocument styledDoc=new DefaultStyledDocument();
    public  static JTextPane display;     //JTextPane对象
    private JScrollPane scroll;
    private JPopupMenu  popupmenu = new JPopupMenu();  //右键菜单
    private Color color;
    public static String font_name = "宋体";
    public static int font_size = 20, font_type = Font.PLAIN;
    public static int xp= 400, yp = 100;
    private Container container=frame.getContentPane(); //获得内容面板
    private  Document  doc ;
    /** 添加撤消管理器 */
    private  UndoManager undomang=new   UndoManager();
    private  UIManager.LookAndFeelInfo looks[]= UIManager.getInstalledLookAndFeels(); //风格
    private JLabel statusbar=new JLabel();
    public static boolean selectflag=true;
    private boolean bold,italic,change,newflag,exitflag,windowflag;
    private boolean openflag;/////////////////////////////////////
    private static Toolkit tk = Toolkit.getDefaultToolkit();
    private static Map<String,ImageIcon> iconsMap= new HashMap<String,ImageIcon>();
	private static ImageIcon[] icons = null;
	static {	
		icons = new ImageIcon[] {
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/title.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/copy.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/cut.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/delete.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/find.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/help.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/new.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/open.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/paste.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/redo.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/change.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/top.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/undo.gif")),
		new ImageIcon(TextEditor.class.getClassLoader().getResource("images/save.gif")),			
		};
		iconsMap.put("title", icons[0]);
		iconsMap.put("copy", icons[1]);
		iconsMap.put("cut", icons[2]);
		iconsMap.put("delete", icons[3]);
		iconsMap.put("find", icons[4]);
		iconsMap.put("help", icons[5]);
		iconsMap.put("new", icons[6]);
		iconsMap.put("open", icons[7]);
		iconsMap.put("paste",icons[8]);
		iconsMap.put("redo", icons[9]);
		iconsMap.put("change", icons[10]);
		iconsMap.put("top", icons[11]);
		iconsMap.put("undo", icons[12]);
		iconsMap.put("save", icons[13]);
        }
        
    public Note() { 
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);   //窗口关闭时不自动处理
        frame.setSize(500, 650);    //设置窗口的大小
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage(TextEditor.class.getClassLoader().getResource("images/title.gif")));
        frame.setLocation(400, 100);       //设置窗口显示的位置
        statusbar.setHorizontalAlignment(JLabel.RIGHT); //设置状态栏在右边显示信息
        windows=new JRadioButtonMenuItem("系统风格",false); //风格按键初始化
        motif=new JRadioButtonMenuItem("MOTIF风格",false);
        metal=new JRadioButtonMenuItem("默认风格",true);
        group.add(windows);  //这样能实现单选
        group.add(motif);
        group.add(metal);
        display= new JTextPane(styledDoc);
        styledDoc.addDocumentListener(new documentLis());//
        doc=display.getDocument();
        toolbar.setEnabled(false); //设置工具条为不要编辑
        doc.addUndoableEditListener(undomang);    //添加事件监听
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                if(change) {
                    windowflag=true;
                    exitText();                                     
                } else  System.exit(0);                
            }
        });
        fileMenu.setMnemonic(KeyEvent.VK_F);//添加相应的快捷方式
        editMenu.setMnemonic(KeyEvent.VK_E);
        formatMenu.setMnemonic(KeyEvent.VK_O);
        helpMenu.setMnemonic(KeyEvent.VK_H);
        viewMenu.setMnemonic(KeyEvent.VK_V);
        container.setLayout(new BorderLayout()); //设置布局
        container.add(display, "Center");
        container.add(toolbar,"North");
        container.add(statusbar,"South");
        display.setFont(new Font("宋体", Font.PLAIN, 20));  //设置字体
        scroll = new JScrollPane(display);      //给文档加上滚动条
        container.add(scroll);
        frame.setJMenuBar(menuBar);             //添加菜单栏
        /**	生成监听器实例对象*/
        ActionListener file = new fileAction();
        ActionListener edit = new editAction();
        ActionListener format = new formatAction();
        ActionListener help = new helpAction();
        MouseListener mouse = new mouseAction();
        ActionListener view = new viewAction();
        /**设置文件菜单*/
        addMenuItem(KeyEvent.VK_N,0, "文件", "新建(N)", 'N', file,fileMenu,true,iconsMap.get("new"));
        addMenuItem(KeyEvent.VK_O,1, "文件", "打开(O)...", 'O', file,fileMenu,false,iconsMap.get("open"));
        addMenuItem(KeyEvent.VK_S,2, "文件", "保存(S)", 'S', file ,fileMenu,false,iconsMap.get("save"));
        addMenuItem(KeyEvent.VK_A,3, "文件", "另存为(A)...", '0', file,fileMenu,false,null);
        addMenuItem(KeyEvent.VK_X,4, "文件", "退出(X)", '0', file,fileMenu,false,null);
        /**设置编辑菜单*/
        addMenuItem(KeyEvent.VK_U,0, "编辑", "撤销(U)", 'Z', edit,editMenu,true,iconsMap.get("undo"));
        addMenuItem(KeyEvent.VK_R,1, "编辑", "恢复(R)", 'Y', edit,editMenu,false,iconsMap.get("redo"));
        addMenuItem(KeyEvent.VK_T,2, "编辑", "剪切(T)", 'X', edit,editMenu,false,iconsMap.get("cut"));
        addMenuItem(KeyEvent.VK_C,3, "编辑", "复制(C)", 'C', edit,editMenu,false,iconsMap.get("copy"));
        addMenuItem(KeyEvent.VK_P,4, "编辑", "粘贴(P)", 'V', edit,editMenu,false,iconsMap.get("paste"));
        addMenuItem(KeyEvent.VK_L,5, "编辑", "删除(L)", '0', edit,editMenu,false,iconsMap.get("delete"));
        addMenuItem(KeyEvent.VK_F,6, "编辑", "查找(F)", 'F', edit,editMenu,false,iconsMap.get("find"));
        addMenuItem(KeyEvent.VK_N,7, "编辑", "查找下一个(N)", '0', edit,editMenu,false,null);
        addMenuItem(KeyEvent.VK_E,8, "编辑", "替换(E)", 'Q', edit,editMenu,false,iconsMap.get("change"));
        addMenuItem(KeyEvent.VK_A,9,"编辑", "全选(A)", 'A', edit,editMenu,false,null);
        addMenuItem(KeyEvent.VK_D,10,"编辑", "时间/日期(D)", '0', edit,editMenu,false,null);
        /**设置格式菜单*/
        addMenuItem(KeyEvent.VK_W,0, "格式", "插入图片(W)", '0', format,formatMenu,true,null);
        addMenuItem(KeyEvent.VK_F,1, "格式", "字体(F)", '0', format,formatMenu,false,null);
        addMenuItem(KeyEvent.VK_C,2, "格式", "颜色(C)", '0', format,formatMenu,false,null);
        addMenuItem(KeyEvent.VK_S,3,"格式","视图风格(S)",'0',format,formatMenu,false,null);
        addMenuItem(KeyEvent.VK_U,4,"格式","下划线(U)",'0',format,formatMenu,false,null);
        /**设置查看菜单*/           
        addMenuItem(KeyEvent.VK_W,1, "查看", "字数统计(W)", '0', view,viewMenu,true,null);
        /**设置帮助菜单*/
        addMenuItem(KeyEvent.VK_H,0, "帮助", "帮助主题(H)", '0', help,helpMenu,true,iconsMap.get("help"));
        addMenuItem(KeyEvent.VK_A,1, "帮助", "关于(A)", '0', help,helpMenu,false,null);
        /**设置右键菜单*/
        addPopupMenu(KeyEvent.VK_U, "撤销(U)", mouse, edit);
        addPopupMenu(KeyEvent.VK_R, "恢复(R)", mouse, edit);
        addPopupMenu(KeyEvent.VK_T, "剪切(T)", mouse, edit);
        addPopupMenu(KeyEvent.VK_C, "复制(C)", mouse, edit);
        addPopupMenu(KeyEvent.VK_P, "粘贴(P)", mouse, edit);
        addPopupMenu(KeyEvent.VK_L, "删除(L)", mouse, edit);
        addPopupMenu(KeyEvent.VK_A, "全选(A)", mouse, edit);
        addPopupMenu(KeyEvent.VK_D, "时间/日期(D)", mouse, edit);
        /**设置工具条**/
        addToolBar(0,"新建",iconsMap.get("new"),file);
        addToolBar(1,"打开",iconsMap.get("open"),file);
        addToolBar(2,"保存",iconsMap.get("save"),file);
        addToolBar(3,"撤销",iconsMap.get("undo"),edit);
        addToolBar(4,"恢复",iconsMap.get("redo"),edit);
        addToolBar(5,"剪切",iconsMap.get("cut"),edit);
        addToolBar(6,"复制",iconsMap.get("copy"),edit);
        addToolBar(7,"粘贴",iconsMap.get("paste"),edit);
        addToolBar(8,"删除",iconsMap.get("delete"),edit);
        frame.setVisible(true);
    }
    /**addToolBar()方法用来设置工具条***/
    private void addToolBar(int num,String label,ImageIcon icon,ActionListener listen) {    	
    	JButton	button = new JButton(icon);    	
        button.setToolTipText(label);  //设置提示信息
        toolbar.add(button);           //添加按键
        button.addActionListener(listen);   //添加监听
        toolbar.addSeparator();            //添加分隔条
        switch(num){
            case 0:newButton=button;break;
            case 1:openButton=button;break;
            case 2:saveButton=button;break;
            case 3:undoButton=button;break;
            case 4:redoButton=button;break;
            case 5:cutButton=button;break;
            case 6:copyButton=button;break;
            case 7:pasteButton=button;break;
            case 8:deleteButton=button;break;
        }
    }
    /**addText()方法用来设置右键菜单*/
    private void addPopupMenu(int num, String label, MouseListener listen1,ActionListener listen2) {
        display.add(popupmenu);
        JMenuItem menuItem = new JMenuItem(label);
        menuItem.setMnemonic(num);
        if (label.equals("剪切(T)") || label.equals("全选(A)"))
            popupmenu.addSeparator();          //添加分隔条
        popupmenu.add(menuItem);
        display.addMouseListener(listen1);//注册监听器的接口MouseListener
        menuItem.addActionListener(listen2);//注册监听器的接口ActionListener
    }

⌨️ 快捷键说明

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