📄 mainmenuframe.java~67~
字号:
/* 引用包说明: * 程序项目打包文件:mainmenu * 引用以下系统包文件: * javax.swing:一套轻量级的组件集,提供新型窗口图形类构件 * java.awt:提供创建用户界面和绘画图片和图像的类构件。 * java.awt.event:提供处理由AWT组件激发的各种不同类型事件的接口和类构件。 * java.io:提供系统通过数据流输入、输出操作的类构件。 *//* 类属性说明: * 程序项目类文件:MainMenuFrame.java *-------------------------------------------------------------------- * 调用以下私有属性(0): * *-------------------------------------------------------------------- * 调用以下无说明符属性(0): * contentPane:程序面板 * borderLayout1:BorderLayout布局管理器1 * jPanel1:JPanel面板 * jTextArea1:用来编辑和显示的文本区 * borderLayout2:BorderLayout布局管理器2 * jMenuBar1:菜单设计器 * jMenu1:File菜单 * jMenuItem1:New菜单 * jMenuItem2:Open菜单 * jMenuItem3:Save菜单 * jMenuItem4:SaveAs菜单 * jMenuItem5:Exit菜单 * jMenu2:Edit菜单 * jMenuItem6:Undo菜单 * jMenuItem7:Cut菜单 * jMenuItem8:Copy菜单 * jMenuItem9:Paste菜单 * jMenu3:Help菜单 * jMenuItem10:About菜单 * jFileChooser1:用来进行文件打开、保存操作的文件选择器 * currentFileName:用来存储当前打开的文件名 * motified:设置修改标记,用来判断文本区的内容是否被修改过 *-------------------------------------------------------------------- * 调用以下保护属性(0): * *-------------------------------------------------------------------- * 调用以下公共属性(0): * *//* 类方法说明: * 程序项目类文件:MainMenuFrame.java *-------------------------------------------------------------------- * 调用以下私有方法(1): * jbInit:组件初始化 *-------------------------------------------------------------------- * 调用以下无说明符方法(1): * openFile:定义打开文件方法 * saveFile:定义保存文件方法 * saveAsFile:定义另保存文件方法 * jMenuItem1_actionPerformed:监听New菜单的单击事件,执行新建文件的操作 * jMenuItem2_actionPerformed:监听Open菜单的单击事件,执行打开文件的操作 * jMenuItem3_actionPerformed:监听Save菜单的单击事件,执行保存文件的操作 * jMenuItem4_actionPerformed:监听SaveAs菜单的单击事件,执行另保存文件的操作 * jMenuItem5_actionPerformed:监听Exit菜单的单击事件,执行选择退出的操作 * jMenuItem7_actionPerformed:监听Cut菜单的单击事件,执行剪切的操作 * jMenuItem8_actionPerformed:监听Copy菜单的单击事件,执行复制的操作 * jMenuItem9_actionPerformed:监听Paste菜单的单击事件,执行粘贴的操作 * jMenuItem10_actionPerformed:监听About菜单的单击事件,执行显示关于信息框的操作 *-------------------------------------------------------------------- * 调用以下保护方法(1): * processWindowEvent:覆写窗口事件使窗口关闭时退出程序 *-------------------------------------------------------------------- * 调用以下公共方法(1): * *//* 类构造器说明: * 程序项目类文件:MainMenuFrame.java *-------------------------------------------------------------------- * 调用以下私有构造器(0): * *-------------------------------------------------------------------- * 调用以下无说明符构造器(0): * *-------------------------------------------------------------------- * 调用以下保护构造器(0): * *-------------------------------------------------------------------- * 调用以下共公构造器(1): * MainMenuFrame:构造MainMenuFrame程序框架类 */package mainmenu;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;/**声明MainMenuFrame程序框架类*/public class MainMenuFrame extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel1 = new JPanel(); JTextArea jTextArea1 = new JTextArea(); BorderLayout borderLayout2 = new BorderLayout(); JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenu1 = new JMenu(); JMenuItem jMenuItem1 = new JMenuItem(); JMenuItem jMenuItem2 = new JMenuItem(); JMenuItem jMenuItem3 = new JMenuItem(); JMenuItem jMenuItem4 = new JMenuItem(); JMenuItem jMenuItem5 = new JMenuItem(); JMenu jMenu2 = new JMenu(); JMenuItem jMenuItem6 = new JMenuItem(); JMenuItem jMenuItem7 = new JMenuItem(); JMenuItem jMenuItem8 = new JMenuItem(); JMenuItem jMenuItem9 = new JMenuItem(); JMenu jMenu3 = new JMenu(); JMenuItem jMenuItem10 = new JMenuItem(); JFileChooser jFileChooser1 = new JFileChooser(); String currentFileName = null; /*用来存储当前打开的文件名*/ boolean motified = false; /*设置修改标记,用来判断文本区的内容是否被修改过*/ /**构造MainMenuFrame程序框架类*/ public MainMenuFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**组件初始化*/ private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); /*设置contentPane的布局管理器*/ this.setJMenuBar(jMenuBar1); /*把jMenuBar类对象jMenuBar1添加到窗口*/ this.setSize(new Dimension(400, 300)); /*设置窗口大小*/ this.setTitle("主菜单"); /*设置窗口标题*/ jPanel1.setLayout(borderLayout2); /*设置jPanel1的布局管理器*/ /*设置菜单对象显示文本,并注册事件监听器*/ jMenu1.setText("File"); jMenuItem1.setText("New"); jMenuItem1.addActionListener(new MainMenuFrame_jMenuItem1_actionAdapter(this)); jMenuItem2.setText("Open"); jMenuItem2.addActionListener(new MainMenuFrame_jMenuItem2_actionAdapter(this)); jMenuItem3.setText("Save"); jMenuItem3.addActionListener(new MainMenuFrame_jMenuItem3_actionAdapter(this)); jMenuItem4.setText("SaveAs"); jMenuItem4.addActionListener(new MainMenuFrame_jMenuItem4_actionAdapter(this)); jMenuItem5.setText("Exit"); jMenuItem5.addActionListener(new MainMenuFrame_jMenuItem5_actionAdapter(this)); jMenu2.setText("Edit"); jMenuItem6.setText("Undo"); jMenuItem7.setText("Cut"); jMenuItem7.addActionListener(new MainMenuFrame_jMenuItem7_actionAdapter(this)); jMenuItem8.setText("Copy"); jMenuItem8.addActionListener(new MainMenuFrame_jMenuItem8_actionAdapter(this)); jMenuItem9.setText("Paste"); jMenuItem9.addActionListener(new MainMenuFrame_jMenuItem9_actionAdapter(this)); jMenu3.setText("Help"); jMenuItem10.setText("About"); jMenuItem10.addActionListener(new MainMenuFrame_jMenuItem10_actionAdapter(this)); contentPane.add(jPanel1, BorderLayout.CENTER); /*把jPanel类对象jPanel1添加到contentPane上*/ jPanel1.add(jTextArea1, BorderLayout.CENTER); /*把jTextArea类对象jTextArea1添加到jPanel1上*/ /*把所有的菜单对象添加到jMenuBar类对象jMenuBar1上*/ jMenuBar1.add(jMenu1); jMenuBar1.add(jMenu2); jMenuBar1.add(jMenu3); jMenu1.add(jMenuItem1); jMenu1.add(jMenuItem2); jMenu1.add(jMenuItem3); jMenu1.add(jMenuItem4); jMenu1.addSeparator(); jMenu1.add(jMenuItem5); jMenu2.add(jMenuItem6); jMenu2.addSeparator(); jMenu2.add(jMenuItem7); jMenu2.add(jMenuItem8); jMenu2.add(jMenuItem9); jMenu3.add(jMenuItem10); } /**覆写窗口事件使窗口关闭时退出程序*/ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } /**定义打开文件方法*/ void openFile(String fileName){ try { File file = new File(fileName); /*指定打开文件*/ int size = (int)file.length(); /*获得文件的大小*/ int chars_read =0; /*设置变量对文件中已被读取的字符计数*/ FileReader in = new FileReader(file); /*从文件中读取数据*/ char[] data = new char[size]; while(in.ready()){ chars_read += in.read(data, chars_read, size - chars_read); } in.close(); jTextArea1.setText(new String(data,0,chars_read)); /*将读取出来的数据显示在文本区中*/ this.currentFileName = fileName; /*取得当前打开的文件名*/ this.motified = false; /*将修改标志复位*/ } catch (IOException e) { jTextArea1.setText("Error opening"+fileName); } } /**定义保存文件方法*/ boolean saveFile(){ if(currentFileName == null) /*如果当前文件还没有名字则调用saveAsFile方法*/ return saveAsFile(); try{ /*将文本区的文本保存到当前的文件中,如果保存成功返回真并将修改标志复位*/ File file = new File(currentFileName); FileWriter out = new FileWriter(file); String text = jTextArea1.getText(); out.write(text); out.close(); this.motified = false; return true; } catch(IOException e){ /*捕获IO异常*/ } return false ; } /**定义另保存文件方法*/ boolean saveAsFile(){ if(jFileChooser1.APPROVE_OPTION==jFileChooser1.showSaveDialog(this)){ /*打开SaveDialog对话框,检查是否指定了某个文件或输入新文件名来存放需要保存的数据*/ currentFileName = jFileChooser1.getSelectedFile().getPath(); /*将当前的文件名设置为选择的文件名*/ this.repaint(); return saveFile(); /*调用saveFile方法保存数据*/ } else{ /*如果未能指定文件名来保存数据则返回假*/ this.repaint(); return false; } } /**监听New菜单的单击事件,执行新建文件的操作*/ void jMenuItem1_actionPerformed(ActionEvent e) { jTextArea1.setText(""); /*设置文本区的内容为空*/ } /**监听Open菜单的单击事件,执行打开文件的操作*/ void jMenuItem2_actionPerformed(ActionEvent e) { if(jFileChooser1.APPROVE_OPTION==jFileChooser1.showOpenDialog(this)){ /*打开Open File对话框并检查是否选中了某个文件要求打开*/ openFile(jFileChooser1.getSelectedFile().getPath()); /*调用openFile方法在文本区中显示文本内容*/ this.repaint(); /*更新程序显示*/ } } /**监听Save菜单的单击事件,执行保存文件的操作*/ void jMenuItem3_actionPerformed(ActionEvent e) { saveFile(); /*保存当前文本*/ } /**监听SaveAs菜单的单击事件,执行另保存文件的操作*/ void jMenuItem4_actionPerformed(ActionEvent e) { saveAsFile(); /*指定一个文件以保存当前文本*/ } /**监听Exit菜单的单击事件,执行选择退出的操作*/ void jMenuItem5_actionPerformed(ActionEvent e) { int n = JOptionPane.showConfirmDialog(contentPane, "确实要退出程序吗?","退出",JOptionPane.YES_NO_OPTION); /*显示退出确认框,并把选择结果赋给int型变量n*/ if(n == JOptionPane.YES_OPTION) { /*如果选择Yes按钮退出程序*/ System.exit(0); } } /**监听Cut菜单的单击事件,执行剪切的操作*/ void jMenuItem7_actionPerformed(ActionEvent e) { jTextArea1.cut(); /*实现剪切功能*/ } /**监听Copy菜单的单击事件,执行复制的操作*/ void jMenuItem8_actionPerformed(ActionEvent e) { jTextArea1.copy(); /*实现复制功能*/ } /**监听Paste菜单的单击事件,执行粘贴的操作*/ void jMenuItem9_actionPerformed(ActionEvent e) { jTextArea1.paste(); /*实现粘贴功能*/ } /**监听About菜单的单击事件,执行显示关于信息框的操作*/ void jMenuItem10_actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(contentPane,"Vertion1.0","关于",JOptionPane.INFORMATION_MESSAGE); /*显示关于信息框*/ }}/**注册监听器,监听New菜单的单击事件*/class MainMenuFrame_jMenuItem1_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem1_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem1_actionPerformed(e); }}/**注册监听器,监听Open菜单的单击事件*/class MainMenuFrame_jMenuItem2_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem2_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem2_actionPerformed(e); }}/**注册监听器,监听Save菜单的单击事件*/class MainMenuFrame_jMenuItem3_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem3_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem3_actionPerformed(e); }}/**注册监听器,监听SaveAs菜单的单击事件*/class MainMenuFrame_jMenuItem4_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem4_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem4_actionPerformed(e); }}/**注册监听器,监听Exit菜单的单击事件*/class MainMenuFrame_jMenuItem5_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem5_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem5_actionPerformed(e); }}/**注册监听器,监听Cut菜单的单击事件*/class MainMenuFrame_jMenuItem7_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem7_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem7_actionPerformed(e); }}/**注册监听器,监听Copy菜单的单击事件*/class MainMenuFrame_jMenuItem8_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem8_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem8_actionPerformed(e); }}/**注册监听器,监听Paste菜单的单击事件*/class MainMenuFrame_jMenuItem9_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem9_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem9_actionPerformed(e); }}/**注册监听器,监听About菜单的单击事件*/class MainMenuFrame_jMenuItem10_actionAdapter implements java.awt.event.ActionListener { MainMenuFrame adaptee; MainMenuFrame_jMenuItem10_actionAdapter(MainMenuFrame adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jMenuItem10_actionPerformed(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -