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

📄 frametest.java

📁 简单的java文本编辑器
💻 JAVA
字号:
/*************************************************************************************
* 类名: FrameTest                                                               
*                                                                    
* 功能: 此类为主程序类,负责生成编辑器的界面,包括菜单区,用户编辑区
*        
**************************************************************************************/
package edit.com;

import java.awt.*;
import java.awt.print.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.undo.*;

public class FrameTest extends JFrame
{
    private Container content;
    private JMenuBar menuBar;
    private JMenu[] menus = new JMenu[4];
    private JMenuItem[] fileItems = new JMenuItem[7];//”file"下拉菜单中的菜单项
    private JMenuItem[] editItems = new JMenuItem[9];//”edit"下拉菜单中的菜单项
    private JMenuItem[] viewItems = new JMenuItem[4];//”view"下拉菜单中的菜单项
    private JMenuItem helpItem;//"help"下拉菜单中的菜单项
    private EditArea editArea; //用户编辑区
    private FrameTestState state = new FrameTestState();//存储此类的状态数据
    private FrameTestTools tool = new FrameTestTool(); //工具类
    private FrameTestDialogs dialogs = new FrameTestDialogs();//各种弹出对话框的封装

    public FrameTest() {
        setSize( 600 , 400 );
        setLocation( 100 , 100 );
        setResizable( false );

        addWindowListener( new WindowAdapter(){
            public void windowClosing( WindowEvent w ) {
            tool.sysExit( state , FrameTest.this, editArea );
            System.exit( 0 );
            }
        });

        content = getContentPane();
        content.setLayout( new BorderLayout( ) );

        menuBar = new JMenuBar();

        //“file"下拉菜单菜单项的生成
        String[] fileItemText = { "new" , "open" , "close" , "save" ,
            "save as..." , "print" , "exit" };
        menus[0] = new JMenu( "File" );
        menus[0].setMnemonic( 'F' );
        fileItems = tool.addItemToMenu( fileItemText );
        tool.addToFileMenu( menus[0], fileItems, menuBar );

        //”edit"下拉菜单菜单项的生成
        String[] editItemText= { "undo" , "cut" , "copy" , "paste" ,
            "delete" , "find" , "replace" , "goto" , "selectAll" };
        menus[1] = new JMenu( "Edit" );
        menus[1].setMnemonic( 'E' );
        editItems = tool.addItemToMenu( editItemText );
        tool.addToEditMenu( menus[1] , editItems , menuBar );

        //“view"下拉菜单菜单项的生成
        String[] viewItemText = { "font" , "color" , "wordWrap" , "selectAll" };
        menus[2] = new JMenu( "View" );
        menus[2].setMnemonic( 'V' );
        viewItems = tool.addItemToMenu( viewItemText );
        tool.addToViewMenu( menus[2] , viewItems , menuBar );

        //”help"下拉菜单菜单项的生成
        menus[3] = new JMenu( "Help" );
        menus[3].setMnemonic( 'H' );
        helpItem = new JMenuItem( new FrameTestHelpItemAction( "about" ,
            "about".toCharArray() ) );
        tool.addToHelpMenu( menus[3] , helpItem , menuBar );

        setJMenuBar( menuBar );

        //“用户编辑区”的生成
        editArea = new EditArea( 20 , 20 );
        editArea.addKeyListener(
            new FrameTestTextKeyListener( editArea,
                                          editItems,
                                          tool,
                                          state,
                                          dialogs ) );
        editArea.getDocument().addUndoableEditListener( state.getUndoableEditListener() );
        JScrollPane scrollPane = new JScrollPane();
        JViewport port = scrollPane.getViewport();
    	port.add( editArea );
        content.add( scrollPane , BorderLayout.CENTER );

        state.setUndoableEditListener( new UndoHandler() );
		
		//向菜单项中添加监听器
        tool.addListenerToItems( viewItems ,
                                 new FrameTestViewItemAction( viewItems,
                                                              editArea,
                                                              state,
                                                              tool,
                                                              FrameTest.this,
                                                              dialogs )
                                );

        tool.addListenerToItems( editItems,
                                 new FrameTestEditItemAction( editItems,
                                                              state,
                                                              editArea,
                                                              tool,
                                                              FrameTest.this,
                                                              dialogs )
                                );

       tool.addListenerToItems( fileItems,
                                new FrameTestFileItemAction( fileItems,
                                                             editItems,
                                                             tool,
                                                             editArea,
                                                             state,
                                                             FrameTest.this )
                               );
    }

    //通过实现UndoableEditListener接口实现“恢复”功能
    private class UndoHandler implements UndoableEditListener {
        public void undoableEditHappened( UndoableEditEvent u ) {
            state.getUndoManager().addEdit( u.getEdit() );
        }
    }
}

⌨️ 快捷键说明

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