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

📄 mymenubar.java

📁 一个记事本的程序 涵盖的方面是很多的
💻 JAVA
字号:
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;

import javax.swing.*;

public class MyMenuBar extends JMenuBar implements ActionListener{
    private JMenu mfile, medit, mview, mform, mhelp;

    private JMenuItem minew, miopen, misave, miresave, miexit;

    private JMenuItem mirepeal, micut, micopy, miadhere, midel, mifound, mifoundnext,
            miexchange, miselectall, midate;

    private JMenuItem mifont;
    private JCheckBoxMenuItem miauto;

    private JCheckBoxMenuItem mistatusbar;

    private JMenuItem mihelp;
    
    private JFileChooser filechooser = null;
    
    private File file;
    
    private int result;

    private Handle handle;
    
    private Calendar cal;
    
    public MyMenuBar(Handle handle) {
        this.handle = handle;
        handle.setMenubar(this);
        
        filechooser = new JFileChooser("C:\\");
        
        mfile = MenuFile();
        medit = MenuEdit();
        mform = MenuForm();
        mview = MenuView();
        mhelp = MenuHelp();
        
    }

    private JMenu MenuFile() {
        JMenu mfile = new JMenu("文件(F)");
        mfile.setMnemonic('F');

        minew = new JMenuItem("新建(N)");
        minew.setMnemonic('N');
        minew.setAccelerator(KeyStroke.getKeyStroke('N',Event.CTRL_MASK,false));

        miopen = new JMenuItem("打开(O)");
        miopen.setMnemonic('O');
        miopen.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MASK,false));

        misave = new JMenuItem("保存(S)");
        misave.setMnemonic('S');
        misave.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK,false));

        miresave = new JMenuItem("另存为(A)");
        miresave.setMnemonic('A');
        
        miexit = new JMenuItem("退出(X)");
        miexit.setMnemonic('X');

        mfile.add(minew);
        mfile.add(miopen);
        mfile.add(misave);
        mfile.add(miresave);
        mfile.addSeparator();
        mfile.add(miexit);

        add(mfile);
        
        minew.addActionListener(this);
        miopen.addActionListener(this);
        misave.addActionListener(this);
        miresave.addActionListener(this);
        miexit.addActionListener(this);

        return mfile;
    }

    private JMenu MenuEdit() {
        JMenu medit = new JMenu("编辑(E)");
        medit.setMnemonic('E');
        
        mirepeal = new JMenuItem("撤销(U)");
        mirepeal.setMnemonic('U');
        mirepeal.setAccelerator(KeyStroke.getKeyStroke('Z',Event.CTRL_MASK,false));
        
        micut = new JMenuItem("剪切(T)");
        micut.setMnemonic('T');
        micut.setAccelerator(KeyStroke.getKeyStroke('X',Event.CTRL_MASK,false));
        
        micopy = new JMenuItem("复制(C)");
        micopy.setMnemonic('C');
        micopy.setAccelerator(KeyStroke.getKeyStroke('C',Event.CTRL_MASK,false));
        
        miadhere = new JMenuItem("粘贴(P)");
        miadhere.setMnemonic('P');
        miadhere.setAccelerator(KeyStroke.getKeyStroke('V',Event.CTRL_MASK,false));
        
        midel = new JMenuItem("删除(L)");
        midel.setMnemonic('L');
        midel.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
        
        mifound = new JMenuItem("查找(F)");
        mifound.setMnemonic('F');
        mifound.setAccelerator(KeyStroke.getKeyStroke('F',Event.CTRL_MASK,false));
        
        mifoundnext = new JMenuItem("查找下一个(N)");
        mifoundnext.setMnemonic('N');
        mifoundnext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
        
        miexchange = new JMenuItem("替换(R)");
        miexchange.setMnemonic('R');
        miexchange.setAccelerator(KeyStroke.getKeyStroke('H',Event.CTRL_MASK,false));
        
        miselectall = new JMenuItem("全选(A)");
        miselectall.setMnemonic('A');
        miselectall.setAccelerator(KeyStroke.getKeyStroke('A',Event.CTRL_MASK,false));
        
        midate = new JMenuItem("时间/日期(D)");
        midate.setMnemonic('D');
        midate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,0));
        
        medit.add(mirepeal);    medit.addSeparator();
        medit.add(micut);   medit.add(micopy);  medit.add(miadhere);
        medit.add(midel);   medit.addSeparator();   medit.add(mifound);
        medit.add(mifoundnext); medit.add(miexchange);  medit.addSeparator();
        medit.add(miselectall);     medit.add(midate);
        
        add(medit);
        
        mirepeal.setEnabled(false);
        
        setFoundEnabledFalse();
        
        setMenuEnabledFalse();
        
        micut.addActionListener(this);
        micopy.addActionListener(this);
        miadhere.addActionListener(this);
        midel.addActionListener(this);
        mifound.addActionListener(this);
        mifoundnext.addActionListener(this);
        miexchange.addActionListener(this);
        miselectall.addActionListener(this);
        midate.addActionListener(this);

        return medit;
    }
    
    private JMenu MenuForm(){
        JMenu mform = new JMenu("格式(O)");
        mform.setMnemonic('O');
        
        miauto = new JCheckBoxMenuItem("自动换行(W)");
        miauto.setMnemonic('W');
        
        mifont = new JMenuItem("字体(F)");
        mifont.setMnemonic('F');
        
        mform.add(miauto);
        mform.add(mifont);
        
        add(mform);
        
        miauto.addActionListener(this);
        mifont.addActionListener(this);
        
        return mform;
    }
    
    private JMenu MenuView(){
        JMenu mview = new JMenu("察看(V)");
        mview.setMnemonic('V');
        
        mistatusbar = new JCheckBoxMenuItem("状态栏(S)",true);
        mistatusbar.setMnemonic('S');
        
        mview.add(mistatusbar);
        
        add(mview);
        
        mistatusbar.addActionListener(this);
        
        return mview;
    }
    
    private JMenu MenuHelp(){
        JMenu mhelp = new JMenu("帮助(H)");
        mhelp.setMnemonic('H');
        
        mihelp = new JMenuItem("关于记事本(A)");
        mihelp.setMnemonic('A');
        
        mhelp.add(mihelp);
        
        add(mhelp);
        
        mihelp.addActionListener(this);
        
        return mhelp;
    }
    
    public void actionPerformed(ActionEvent e){
        Object o = e.getSource();
        if(o == minew){
            switch(handle.getNote().getSaveCount()){
                case JOptionPane.YES_OPTION: {
                    SaveFile();
                    handle.stop();
                    handle.start();
                    break;
                }
                case JOptionPane.NO_OPTION:{
                    handle.stop();
                    handle.start();
                }
                case JOptionPane.CANCEL_OPTION:{
                    return;
                }
            }
        }
        else if(o == miopen){
            OpenFile();
        }
        else if(o == misave){
            SaveFile();
        }
        else if(o == miresave){
            filechooser.setDialogTitle("另存为");
            ReSaveFile();
        }
        else if(o == miexit){
            handle.getNote().setSave(handle.getNote().getSaveCount());
        }
        else if(o == mirepeal){
            
        }
        else if(o == micut){
            handle.getInputtext().cut();
        }
        else if(o == micopy){
            handle.getInputtext().copy();
        }
        else if(o == miadhere){
            handle.getInputtext().paste();
        }
        else if(o == midel){
            int start = handle.getInputtext().getSelectionStart();
            int end = handle.getInputtext().getSelectionEnd();
            handle.getInputtext().replaceRange("",start,end);
        }
        else if(o == mifound){
            
        }
        else if(o == mifoundnext){
            
        }
        else if(o == miexchange){
            
        }
        else if(o == miselectall){
            handle.getInputtext().selectAll();
        }
        else if(o == midate){
            cal = Calendar.getInstance();
            String date = cal.getTime().toLocaleString();
            handle.getInputtext().append(date);
        }
        else if(o == miauto){
            if(miauto.isSelected()){
                mistatusbar.setEnabled(false);
                handle.getNote().RemoveStatusbar();     //移除状态栏
                mistatusbar.setSelected(false);
                
                handle.getInputtext().setTextWrapTrue();
            }
            else{
                mistatusbar.setEnabled(true);
                handle.getInputtext().setTextWrapFalse();
            }
        }
        else if(o == mifont){
            FontDialog fd = new FontDialog(handle.getNote(),"字体",true,handle.getFont());
            handle.getInputtext().setFont(fd.getFont());
        }
        else if(o == mistatusbar){
            if(mistatusbar.isSelected()){
                handle.getNote().AddStatusbar();
            }
            else{
                handle.getNote().RemoveStatusbar();
            }
        }
        else if(o == mihelp){
            new AboatDialog(handle.getNote(),"关于  记事本",true);
        }
    }
    
    public void setMenuEnabledTrue(){
        micut.setEnabled(true);
        micopy.setEnabled(true);
        midel.setEnabled(true);
    }
    
    public void setMenuEnabledFalse(){
        micut.setEnabled(false);
        micopy.setEnabled(false);
        midel.setEnabled(false);
    }
    
    public void setFoundEnabledTrue(){
        mifound.setEnabled(true);
        mifoundnext.setEnabled(true);
    }
    
    public void setFoundEnabledFalse(){
        mifound.setEnabled(false);
        mifoundnext.setEnabled(false);
    }
    
    public void setMenuRepealTrue(){
        mirepeal.setEnabled(true);
    }
    
    public void ReSaveFile() {
        result = filechooser.showSaveDialog(handle.getNote());
        if (result == JFileChooser.APPROVE_OPTION) {
            try {
                file = filechooser.getSelectedFile();
                FileWriter fw = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(fw);
                String text = handle.getInputtext().getText();
                bw.write(text, 0, text.length());
                bw.flush();
                fw.close();
                handle.getNote().setTitle(file.getName() + " - 记事本");
            } 
            catch (Exception e) {}
        }
        
    }
    
    public void OpenFile(){
        String str;
        result = filechooser.showOpenDialog(handle.getNote());
        if(result == JFileChooser.APPROVE_OPTION){
            try{
                file = filechooser.getSelectedFile();
                FileReader fr = new FileReader(file);
                BufferedReader br = new BufferedReader(fr);
                handle.getInputtext().setText("");
                while((str = br.readLine()) != null)
                    handle.getInputtext().append(str + '\n');
                fr.close();
                handle.getNote().setTitle(file.getName() + " - 记事本");
            }
            catch(Exception ex){}
        }
    }
    
    public void SaveFile(){
        if(handle.getNote().getTitle().equals("无标题 - 记事本")){
            ReSaveFile();
        }
        else{
            try {
                FileWriter fw = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(fw);
                String text = handle.getInputtext().getText();
                bw.write(text, 0, text.length());
                bw.flush();
                fw.close();
                handle.getNote().setTitle(file.getName() + " - 记事本");
            } 
            catch (Exception ex) {}
        }
    }
}

⌨️ 快捷键说明

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