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

📄 spellchecker.java

📁 文本编辑分析大师
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package myprojects_SpellChecker;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import javax.swing.text.*;
import javax.swing.undo.*;
import javax.swing.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.JTable;

public class SpellChecker extends JFrame{
    public SpellChecker() {//构造函数
        super("文本编辑分析大师");JTextArea a=new JTextArea();
        if (System.getProperty("java.version").compareTo("1.5") < 0){
            JOptionPane.showMessageDialog(SpellChecker.this,"this application must be run with a 1.5 or higher version VM!","WARNING!",JOptionPane.WARNING_MESSAGE);
            System.exit(1);
        }
        try {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
            //UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
        } catch (Exception exc) {
            System.err.println("Error loading L&F: " + exc);
        }        
        styledpad=new StyledPad(SpellChecker.this);//创建StyledPad类对象
        isDocumentModified=false;
        isChecked=false;
        isNeedAutoCheck=false;
        strBuf=new StringBuffer();
        wrongwordlog=new Vector();
        timer = new javax.swing.Timer(TIME_TRIGGER_SPAN, new TimerListener());//创建定时器
        timer.start();
        this.initText_Analyze();
        this.creattoolBar();//创建工具条
        this.creatPopupMenu();//创建右键菜单
		styledpad.getEditor().addMouseListener(new MouseAdapter() { 
	         public void mouseReleased(MouseEvent event) {      
	            if (event.isPopupTrigger())
	                popupmenu.show(event.getComponent(), event.getX(), event.getY());       
	            }
	      });
        this.setResizable(false);
        setVisible(true);//显示窗口
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent we) {
                if(isDocumentModified)
                    confirmExit();
                else{
                    we.getWindow().dispose();
                    timer.stop();
                    System.exit(0);
                }
            }
        });
    }
    private void creatPopupMenu(){
    	popupmenu=new JPopupMenu();        
        JMenuItem menuitem;        

        menuitem = new JMenuItem("复制");     
		menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));         
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().copy();
            }
        });
        menuitem = new JMenuItem("剪切");  
        menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));       
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent actionevent){
                styledpad.getEditor().cut();
            }
        	}
        );        
        menuitem = new JMenuItem("粘贴");
		menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));         
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().paste();
            }
        });
        popupmenu.addSeparator(); 
        menuitem= new JMenuItem("恢复");
		menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));        
        popupmenu.add(menuitem);
        menuitem.addActionListener(styledpad.undoAction);        
        menuitem= new JMenuItem("重做");
        menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));
        popupmenu.add(menuitem);
        menuitem.addActionListener(styledpad.redoAction);        
        popupmenu.addSeparator(); 
    	
    	String[] StrPopupMenu={"标记错误单词","错误智能更正"};    	
    	for(int i=0;i<StrPopupMenu.length;i++){
    		menuitem=new JMenuItem(StrPopupMenu[i]);
    		if(i==0)
    			menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
    		else 
    			menuitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,InputEvent.CTRL_MASK));    			
    		popupmenu.add(menuitem);
    		menuitem.addActionListener(spellmenuListener);
    		}
    	popupmenu.addSeparator(); 
    	
        menuitem = new JMenuItem("导出词典...");
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showSaveDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                File f = chooser.getSelectedFile();
                dirProc.ExtraDictionary(f);
            }
        });    	    		    		
        menuitem = new JMenuItem("自定义词典...");
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showOpenDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                directoryfile = chooser.getSelectedFile();
                dirProc=new DictionaryProcessor(directoryfile);//将词典文件中的单词存入TreeSet中
            }
        });
        menuitem = new JMenuItem("导出分析记录...");
        popupmenu.add(menuitem);
        menuitem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showSaveDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                File file = chooser.getSelectedFile();
                logFileSaver(file);
            }
        });
    }    
    private void creattoolBar(){
        toolbar=new JToolBar();//工具条对象
        toolbar.setLayout(new FlowLayout(FlowLayout.LEFT,2,0));
        setVisible(true);
        toolbutton=new JButton(new ImageIcon("images/new.png"));
        toolbutton.setToolTipText("新建");
        
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().setText("");
                isDocumentModified=false;
            }
        });
        toolbutton=new JButton(new ImageIcon("images/open.png"));
        toolbutton.setToolTipText("打开");
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                srcFileLoader();
            }
        });
        toolbutton=new JButton(new ImageIcon("images/save.png"));
        toolbutton.setToolTipText("保存");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                FileSaver(srcfile);
            }
        });
        toolbar.addSeparator();
        toolbutton=new JButton(new ImageIcon("images/cut.png"));
        toolbutton.setToolTipText("剪切");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().cut();
            }
        });
        toolbutton=new JButton(new ImageIcon("images/copy.png"));
        toolbutton.setToolTipText("复制");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().copy();
            }
        });
        toolbutton=new JButton(new ImageIcon("images/paste.png"));
        toolbutton.setToolTipText("粘贴");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                styledpad.getEditor().paste();
            }
        });
        toolbar.addSeparator();
        toolbutton=new JButton(new ImageIcon("images/undo.png"));
        toolbutton.setToolTipText("撤消");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(styledpad.undoAction);
        
        toolbutton=new JButton(new ImageIcon("images/redo.png"));
        toolbutton.setToolTipText("恢复");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(styledpad.redoAction);
        
        toolbar.addSeparator();
        toolbutton=new JButton(new ImageIcon("images/in.png"));
        toolbutton.setToolTipText("自定义词典");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showOpenDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                File file = chooser.getSelectedFile();
                dirProc=new DictionaryProcessor(file);//将字典文件中的单词存入TreeSet中
            }
        });
        
        toolbutton=new JButton(new ImageIcon("images/out.png"));
        toolbutton.setToolTipText("导出词典");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showSaveDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                File f = chooser.getSelectedFile();
                dirProc.ExtraDictionary(f);
            }
        });
        
        toolbar.addSeparator();
        toolbutton=new JButton(new ImageIcon("images/wrong.png"));
        toolbutton.addActionListener(spellmenuListener);
        toolbutton.setToolTipText("标记错误单词");//设置组件的提示文字
        toolbutton.setActionCommand("标记错误单词");
        toolbar.add(toolbutton);
        
      
        toolbutton=new JButton(new ImageIcon("images/right.png"));
        toolbutton.addActionListener(spellmenuListener);
        toolbutton.setToolTipText("错误智能更正");//设置组件的提示文字
        toolbutton.setActionCommand("错误智能更正");
        toolbar.add(toolbutton);
        
        
        toolbutton=new JButton(new ImageIcon("images/analyse.png"));
        toolbutton.setToolTipText("导出分析记录");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JFileChooser chooser = new JFileChooser();
                int retval = chooser.showSaveDialog(SpellChecker.this);
                if (retval != JFileChooser.APPROVE_OPTION) {
                    return;
                }
                File file = chooser.getSelectedFile();
                logFileSaver(file);
            }
        });
        toolbar.addSeparator();
        toolbutton=new JButton(new ImageIcon("images/help.png"));
        toolbutton.setToolTipText("帮助");//设置组件的提示文字
        toolbar.add(toolbutton);
        toolbutton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event) {
                JOptionPane.showMessageDialog(SpellChecker.this,"帮助文档.","帮助",JOptionPane.INFORMATION_MESSAGE,new ImageIcon("help.png"));
            }
        });
        contentPane.add(toolbar,BorderLayout.NORTH);
    }
    private  void initText_Analyze(){
        startWindow startwin=new startWindow();
        startwin.start();//启动显示启动画面线程
        try{Thread.sleep(99);}catch(InterruptedException ex){}
        startwin.resume();
        directoryfile=new File(directoryPath);
        if(!directoryfile.exists()||!directoryfile.canRead())
            System.out.println("词典文件读取失败!");
        else{
            dirProc=new DictionaryProcessor(directoryfile);//将词典文件中的单词存入TreeSet中
        }
        try{Thread.sleep(99);}catch(InterruptedException ex){}
        startwin.resume();
        contentPane = this.getContentPane();
        contentPane.setLayout(new BorderLayout(1,1));
        this.creatMenu();//创建菜单
        statusbar = new StatusBar();  //创建菜单条
        showlabelThread=new ShowJLabelThread();//creat a thread
        statusbar.add(showlabelThread.showJLabel);
        showlabelThread.start();
        
        text_tablePanel=new JPanel();
        
        table = new JTable();
        table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        scroller_table=new JScrollPane(table);
        scroller_table.setBackground(new Color(204,204,255));
        scroller_table.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder("统计结果"),BorderFactory.createEmptyBorder(1,1,1,1)));
        
        scroller_text = new JScrollPane(styledpad.getEditor());
        contentPane.add(scroller_text,BorderLayout.CENTER);
        contentPane.add("South",statusbar);
        setSize(800,600);//设置窗口大小

⌨️ 快捷键说明

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