📄 mymenubar.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 + -