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

📄 notepad.java

📁 这是一个用JAVA编写的记事本的原码。功能和WINDOWS自带基本一样。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 
import java.awt.datatransfer.*; 
import java.io.*; 
import javax.swing.undo.*; 

public class Notepad extends JFrame implements ActionListener  
{ 
    private JMenuBar menuBar; 
    private JMenu fileMenu; 
    private JMenu editMenu; 
    private JMenu formatMenu; 
    private JMenu helpMenu; 
    private JMenuItem[] menuItem = new JMenuItem[18]; 
    private String[] menuItemNames = { "新建(N)         Ctrl+N", "打开(O)...      Ctrl+O", 
        "保存(S)         Ctrl+S", "另存为(A)...", "退出(X)", "撤消(U)         Ctrl+Z",  
        "重做(D)         Ctrl+Y", "剪切(T)         Ctrl+X", "复制(C)         Ctrl+C",  
        "粘贴(P)         Ctrl+V", "删除(L)         Del", "查找(F)...      Ctrl+F", 
        "查找下一个(N)   F3", "替换(R)...      Ctrl+H", "全选(A)         Ctrl+A", 
        "自动换行(W)", "字体(F)...", "关于记事本(A)" }; 
    private char[] mnemonics = { 'N', 'O', 'S', 'A', 'X', 'U','D', 'T', 'C', 'P', 'L', 'F',  
        'N', 'R', 'A', 'W', 'F', 'A' }; 
    private JTextArea text; 
    private Font font = new Font( "宋体", Font.PLAIN, 12 ); 
    private boolean hasSaved = true; 
    private UndoManager undoManager = new UndoManager(); 
    private String openedFileName = "", openedFilePath = ""; 
    private StringBuffer findString = new StringBuffer(); 
    private StringBuffer replaceString = new StringBuffer(); 
    private Rectangle rect; 

    public static void main(String[] args)  
    { 
        Notepad note = new Notepad(); 
        note.setSize( 800, 600 ); 
        note.setLocation(100, 100 ); 
        note.setVisible( true ); 
    } 

    public Notepad()  
    { 
        super( "无标题-记事本" ); 
        this.addWindowListener( 
            new WindowAdapter() 
            { 
                public void windowClosing( WindowEvent e ) 
                { 
                    if ( isSaved() ) 
                    {             
                        System.exit( 0 ); 
                    } 
                    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);         
                } 
            } 
        ); 
        JMenuBar menuBar = new JMenuBar(); 
        setJMenuBar( menuBar ); 
        int i = 0; 
        text = new JTextArea(); 
         
        fileMenu = new JMenu( "文件(F)" ); 
        fileMenu.setFont( font ); 
        fileMenu.setMnemonic( 'F' ); 
        for( ; i < 5; i ++ ) 
        { 
            menuItem[i] = new JMenuItem( menuItemNames[i] ); 
            menuItem[i].setMnemonic( mnemonics[i] ); 
            menuItem[i].setFont( font ); 
            menuItem[i].addActionListener( this ); 
            fileMenu.add( menuItem[i] ); 
            if( i == 3 ) fileMenu.addSeparator(); 
        } 
         
        menuBar.add( fileMenu ); 
        editMenu = new JMenu( "编辑(E)" ); 
        editMenu.setFont( font ); 
        editMenu.setMnemonic( 'E' ); 
        editMenu.addMenuListener( 
            new MenuListener() 
            { 
                public void menuCanceled( MenuEvent e ) 
                { 
                } 
                 
                public void menuDeselected( MenuEvent e ) 
                { 
                } 
                 
                public void menuSelected( MenuEvent e ) 
                { 
                    String selectedText = text.getSelectedText(); 
                    boolean canCut = ( selectedText != null && selectedText.length() > 0 ); 
                    Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); 
                    Transferable t = cb.getContents( this ); 
                    menuItem[5].setEnabled( undoManager.canUndo() ); 
                    menuItem[6].setEnabled( undoManager.canRedo() ); 
                    menuItem[7].setEnabled( canCut ); 
                    menuItem[8].setEnabled( canCut ); 
                    menuItem[9].setEnabled(  t.isDataFlavorSupported( DataFlavor.stringFlavor ) ); 
                    menuItem[10].setEnabled( canCut ); 
                    boolean isEmpty = text.getText().equals( "" ); 
                    for( int i = 11; i < 14; i ++) 
                    { 
                        menuItem[i].setEnabled( !isEmpty ); 
                    } 
                } 
            } 
        ); 
        for( ; i < 15; i ++ ) 
        { 
            menuItem[i] = new JMenuItem( menuItemNames[i] ); 
            menuItem[i].setMnemonic( mnemonics[i] ); 
            menuItem[i].setFont( font ); 
            menuItem[i].addActionListener( this ); 
            editMenu.add( menuItem[i] ); 
            if( i == 6 || i == 10 || i == 13 ) editMenu.addSeparator(); 
        } 
        menuBar.add( editMenu ); 
         
        formatMenu = new JMenu( "格式(O)" ); 
        formatMenu.setFont( font ); 
        formatMenu.setMnemonic( 'O' ); 
        for( ; i < 17; i ++ ) 
        { 
            if( i == 15 ) 
            { 
                menuItem[i] = new JCheckBoxMenuItem( menuItemNames[i] ); 
                menuItem[i].setSelected( true ); 
                text.setLineWrap( true ); 
            } 
            else menuItem[i] = new JMenuItem( menuItemNames[i] ); 
            menuItem[i].setMnemonic( mnemonics[i] ); 
            menuItem[i].setFont( font ); 
            menuItem[i].addActionListener( this ); 
            formatMenu.add( menuItem[i] ); 
        } 
        menuBar.add( formatMenu ); 
         
        helpMenu = new JMenu( "帮助(H)" ); 
        helpMenu.setFont( font ); 
        helpMenu.setMnemonic( 'H' ); 
        menuItem[i] = new JMenuItem( menuItemNames[i] ); 
        menuItem[i].setMnemonic( mnemonics[i] ); 
        menuItem[i].setFont( font ); 
        menuItem[i].addActionListener( this ); 
        helpMenu.add( menuItem[i] ); 
        menuBar.add( helpMenu ); 
         
        text.setFont( new Font( "宋体", Font.PLAIN, 18 ) ); 
        text.addKeyListener( 
            new KeyAdapter() 
            { 
                public void keyPressed( KeyEvent e ) 
                { 
                    int i = -1; 
                    String keyText = e.getKeyText( e.getKeyCode() ); 
                    String modifierKey = e.getKeyModifiersText( e.getModifiers() ); 
                    if( modifierKey.equals( "" ) ) 
                    { 
                        if( keyText.equals( "F3" ) )  
                        { 
                            i = 12; 
                        } 
                        else return; 
                    } 
                    else if( modifierKey.equals( "Ctrl" ) ) 
                    { 
                        int ch = e.getKeyCode(); 
                        switch( ch ) 
                        { 
                            case 78: 
                                i = 0; 
                                break; 
                            case 79: 
                                i = 1; 
                                break; 
                            case 83: 
                                i = 2; 
                                break; 
                            case 90: 
                                i = 5; 
                                break; 
                            case 89: 
                                i = 6; 
                                break; 
                            case 70: 
                                i = 11; 
                                break; 
                            case 72: 
                                i = 13; 
                                break; 
                            case 65: 
                                i = 14; 
                                break; 
                            default: 
                                return; 
                        } 
                    } 
                    actions( menuItem[i], menuItemNames[i] ); 
                } 
            } 
        ); 
        text.addMouseListener( 
            new MouseAdapter() 
            { 
                public void mouseReleased( MouseEvent event ) 
                { 
                    if( event.getModifiers() == MouseEvent.BUTTON3_MASK ) 
                    { 
                        JTextArea text = ( JTextArea ) event.getSource(); 
                        String selectedText = text.getSelectedText(); 
                        boolean canCut = ( selectedText != null && selectedText.length() > 0 ); 
                        Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); 
                        Transferable t = cb.getContents( this ); 
                        JPopupMenu popupMenu = new JPopupMenu(); 
                        JMenuItem popupMenuItem[] = new JMenuItem[15]; 
                        for( int i = 5; i < 15; i ++ ) 
                        { 
                            if( i != 11 && i != 12 && i != 13 ) 
                            { 
                                popupMenuItem[i] = new JMenuItem( menuItemNames[i] ); 
                                popupMenuItem[i].setMnemonic( mnemonics[i] ); 
                                popupMenuItem[i].setFont( font ); 
                                if( i == 5 ) popupMenuItem[i].setEnabled( undoManager.canUndo() ); 
                                if( i == 6 ) popupMenuItem[i].setEnabled( undoManager.canRedo() ); 
                                if( i == 7 || i == 8 || i == 10 ) popupMenuItem[i].setEnabled( canCut ); 
                                if( i == 9 ) popupMenuItem[i].setEnabled( 
                                    t.isDataFlavorSupported( DataFlavor.stringFlavor ) ); 
                                popupMenuItem[i].addActionListener( Notepad.this ); 
                                popupMenu.add( popupMenuItem[i] ); 
                                if( i == 6 || i == 10 ) popupMenu.addSeparator(); 
                            } 
                        } 
                        popupMenu.show( event.getComponent(), event.getX(), event.getY() ); 
                    } 
                } 
            } 
        ); 
        text.getDocument().addUndoableEditListener( 
            new UndoableEditListener()  
            { 
                public void undoableEditHappened( UndoableEditEvent e )  
                { 
                    undoManager.addEdit( e.getEdit() ); 
                } 
            } 
        ); 
        text.getDocument().addDocumentListener( 
            new DocumentListener() 
            { 
                public void changedUpdate( DocumentEvent e ) 

⌨️ 快捷键说明

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