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

📄 mainframe.java~99~

📁 我自己用java写的记事本
💻 JAVA~99~
📖 第 1 页 / 共 2 页
字号:
package texteditor;

import java.io.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*; /**
 * <p>Title: 文本编辑器</p>
 * <p>Description: 本软件为面向对象程序设计期末作业,不得擅自修改</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: 边缘开发室</p>
 * @author 第三组 ,组长:谭XX
 * @version 1.0
 */
import javax.swing.event.*;

public class MainFrame
    extends JFrame
{
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu jMenu1 = new JMenu();
  JMenuItem jMenuItem1 = new JMenuItem();
  JMenuItem jMenuItem2 = new JMenuItem();
  JMenuItem jMenuItem3 = new JMenuItem();
  JMenu jMenu2 = new JMenu();
  JMenuItem jMenuItem4 = new JMenuItem();
  JMenu jMenu4 = new JMenu();
  JMenuItem jMenuItem7 = new JMenuItem();
  JMenuItem jMenuItem8 = new JMenuItem();
  JMenuItem jMenuItem9 = new JMenuItem();
  JMenuItem jMenuItem10 = new JMenuItem();
  JMenuItem jMenuItem11 = new JMenuItem();
  JPanel jPanel1 = new JPanel();
  JScrollPane jScrollPane1 = new JScrollPane();
  static JTextArea contentText = new JTextArea();
  JLabel stateLabel = new JLabel();
  GridLayout gridLayout1 = new GridLayout();
  FontSetting fontSetting = new FontSetting();
  JCheckBoxMenuItem autoLineWrapItem = new JCheckBoxMenuItem();
  JMenuItem jMenuItem5 = new JMenuItem();
  //判断当前是不是新建的文档,如果是,则为true,否则为false
  boolean changed;
  //所操作的文件路径
  String filePath = null;
  //文件对话框
  JFileChooser jfc = new JFileChooser();
  String fileName; //当前文件名
  JToolBar jToolBar1 = new JToolBar();
  JButton saveButton = new JButton();
  JButton openButton = new JButton();
  JButton findButton = new JButton();
  JButton newButton = new JButton();
  JMenuItem jMenuItem12 = new JMenuItem();
  JMenuItem jMenuItem13 = new JMenuItem();
  JMenu jMenu5 = new JMenu();
  JMenuItem defaultUIMenu = new JMenuItem();
  JMenuItem jMenuItem15 = new JMenuItem();
  JMenu jMenu3 = new JMenu();
  JMenuItem jMenuItem6 = new JMenuItem();
  FindDialog findStringDialog;
  JMenuItem jMenuItem17 = new JMenuItem();
  JMenuItem jMenuItem18 = new JMenuItem();
  JMenuItem jMenuItem16 = new JMenuItem();
  JMenuItem jMenuItem19 = new JMenuItem();
  JPopupMenu popupMenu = new JPopupMenu();
  JMenuItem jMenuItem14 = new JMenuItem();
  JMenuItem jMenuItem20 = new JMenuItem();
  JMenuItem jMenuItem21 = new JMenuItem();
  JMenuItem jMenuItem22 = new JMenuItem();
  JMenuItem jMenuItem23 = new JMenuItem();
  JMenuItem jMenuItem24 = new JMenuItem();
  JMenuItem jMenuItem25 = new JMenuItem();
  JMenuItem jMenuItem26 = new JMenuItem();
  JMenuItem jMenuItem27 = new JMenuItem();
  JMenu jMenu6 = new JMenu();
  JMenuItem jMenuItem28 = new JMenuItem();
  JRadioButtonMenuItem jRadioButtonMenuItem1 = new JRadioButtonMenuItem();

  public MainFrame()
  {
    try
    {
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      jbInit();
    }
    catch (Exception exception)
    {
      exception.printStackTrace();
    }
  }

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception
  {
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(borderLayout1);
    setSize(new Dimension(700, 500));
    this.setState(Frame.NORMAL);
    setTitle("文字处理器");
    this.addWindowListener(new MainFrame_this_windowAdapter(this));
    jMenu1.setText("文件");
    jMenuItem1.setText("打开");
    jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke('O',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem1.addActionListener(new MainFrame_jMenuItem1_actionAdapter(this));
    jMenuItem2.setText("保存");
    jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem2.addActionListener(new MainFrame_jMenuItem2_actionAdapter(this));
    jMenuItem3.setText("退出");
    jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke('Q',
        java.awt.event.KeyEvent.CTRL_MASK, false));
    jMenuItem3.addActionListener(new MainFrame_jMenuItem3_actionAdapter(this));
    jMenu2.setText("设置");
    jMenuItem4.setText("高级设置");
    jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
        java.awt.event.KeyEvent.CTRL_MASK | java.awt.event.KeyEvent.SHIFT_MASK, true));
    jMenuItem4.addActionListener(new MainFrame_jMenuItem4_actionAdapter(this));
    jMenu4.setText("处理");
    jMenuItem7.setText("复制");
    jMenuItem7.setAccelerator(javax.swing.KeyStroke.getKeyStroke('C',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem7.addActionListener(new MainFrame_jMenuItem7_actionAdapter(this));
    jMenuItem8.setText("剪切");
    jMenuItem8.setAccelerator(javax.swing.KeyStroke.getKeyStroke('X',
        java.awt.event.KeyEvent.CTRL_MASK, false));
    jMenuItem8.addActionListener(new MainFrame_jMenuItem8_actionAdapter(this));
    jMenuItem9.setText("粘贴");
    jMenuItem9.setAccelerator(javax.swing.KeyStroke.getKeyStroke('V',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem9.addActionListener(new MainFrame_jMenuItem9_actionAdapter(this));
    jMenuItem10.setText("删除");
    jMenuItem10.addActionListener(new MainFrame_jMenuItem10_actionAdapter(this));
    jMenuItem11.setText("全选");
    jMenuItem11.setAccelerator(javax.swing.KeyStroke.getKeyStroke('A',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem11.addActionListener(new MainFrame_jMenuItem11_actionAdapter(this));
    jPanel1.setLayout(gridLayout1);
    jPanel1.setBorder(null);
    contentText.setBorder(null);
    contentText.setDoubleBuffered(true);
    contentText.setForeground(new Color(0, 0, 93)); //初始化字体颜色和背景色及大小
    contentText.setBackground(new Color(71, 171, 255));
    contentText.setFont(new Font("", Font.PLAIN, 14));
    contentText.setTabSize(4);
    //给文本框添加监听,如果对文本操作,就引起以下事件
    contentText.getDocument().addDocumentListener(new DocumentChangedHandle());
    autoLineWrapItem.setText("自动换行");
    autoLineWrapItem.addChangeListener(new
                                       MainFrame_autoLineWrapItem_changeAdapter(this));
    jMenuItem5.setText("新建");
    jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke('N',
        java.awt.event.KeyEvent.CTRL_MASK, true));
    jMenuItem5.addActionListener(new MainFrame_jMenuItem5_actionAdapter(this));
    stateLabel.setText(" ");
    jToolBar1.setFloatable(true);
    saveButton.setToolTipText("保存");
    saveButton.setIcon(new ImageIcon("src/image/save.png"));
    saveButton.addActionListener(new MainFrame_saveButton_actionAdapter(this));
    // openButton.setText("");
    openButton.setToolTipText("打开");
    openButton.setIcon(new ImageIcon("src/image/open.png"));
    openButton.addActionListener(new MainFrame_openButton_actionAdapter(this));
    //findButton.setText("");
    findButton.setToolTipText("查找");
    findButton.setIcon(new ImageIcon("src/image/find.png"));
    findButton.addActionListener(new MainFrame_findButton_actionAdapter(this));
    //newButton.setText("");
    newButton.setToolTipText("新建");
    newButton.setIcon(new ImageIcon("src/image/new.png"));
    newButton.addActionListener(new MainFrame_newButton_actionAdapter(this));
    jMenuItem12.setText("另存为");
    jMenuItem12.setAccelerator(javax.swing.KeyStroke.getKeyStroke('S',
        java.awt.event.KeyEvent.CTRL_MASK | java.awt.event.KeyEvent.ALT_MASK, false));
    jMenuItem12.addActionListener(new MainFrame_jMenuItem12_actionAdapter(this));
    jMenuItem13.setText("查找");
    jMenuItem13.setAccelerator(javax.swing.KeyStroke.getKeyStroke('F',
        java.awt.event.KeyEvent.CTRL_MASK, false));
    jMenuItem13.addActionListener(new MainFrame_jMenuItem13_actionAdapter(this));
    jMenu5.setText("界面选择");
    defaultUIMenu.setText("默认");
    defaultUIMenu.addActionListener(new MainFrame_defaultUIMenu_actionAdapter(this));
    jMenuItem15.setText("windows");
    jMenuItem15.addActionListener(new MainFrame_jMenuItem15_actionAdapter(this));
    jMenu3.setText("帮助");
    jMenuItem6.setText("帮助系统");
    jMenuItem6.addActionListener(new MainFrame_jMenuItem6_actionAdapter(this));
    jMenuItem17.setText("剪切");
    jMenuItem18.setText("复制");
    jMenuItem16.setText("粘贴");
    jMenuItem19.setText("删除");
    jMenuItem14.setText("新建");
    jMenuItem20.setText("打开");
    jMenuItem21.setText("保存");
    jMenuItem22.setText("另存为");
    jMenuItem23.setText("剪切");
    jMenuItem24.setText("复制");
    jMenuItem25.setText("粘贴");
    jMenuItem26.setText("删除");
    jMenuItem27.setText("退出");
    jMenu6.setText("设置");
    jMenuItem28.setText("高级设置");
    jRadioButtonMenuItem1.setEnabled(false);
    jRadioButtonMenuItem1.setText("自动换行");
    jMenuBar1.add(jMenu1);
    jMenuBar1.add(jMenu4);
    jMenuBar1.add(jMenu2);
    jMenuBar1.add(jMenu5);
    jMenuBar1.add(jMenu3);
    jMenu1.add(jMenuItem5);
    jMenu1.addSeparator();
    jMenu1.add(jMenuItem1);
    jMenu1.add(jMenuItem2);
    jMenu1.add(jMenuItem12);
    jMenu1.addSeparator();
    jMenu1.add(jMenuItem3);
    jMenu2.add(jMenuItem4);
    jMenu2.add(autoLineWrapItem);
    jMenu4.add(jMenuItem13);
    jMenu4.addSeparator();
    jMenu4.add(jMenuItem11);
    jMenu4.addSeparator();
    jMenu4.add(jMenuItem7);
    jMenu4.add(jMenuItem8);
    jMenu4.add(jMenuItem9);
    jMenu4.addSeparator();
    jMenu4.add(jMenuItem10);
    contentPane.add(jScrollPane1, java.awt.BorderLayout.CENTER);
    contentPane.add(jPanel1, java.awt.BorderLayout.SOUTH);
    jPanel1.add(stateLabel);
    jScrollPane1.getViewport().add(contentText);
    jToolBar1.add(newButton, null);
    jToolBar1.add(openButton, null);
    jToolBar1.add(saveButton, null);
    jToolBar1.add(findButton, null);
    jMenu5.add(defaultUIMenu);
    jMenu5.add(jMenuItem15);
    jMenu3.add(jMenuItem6);
    this.getContentPane().add(jToolBar1, BorderLayout.NORTH);
    popupMenu.add(jMenuItem14);
    popupMenu.addSeparator();
    popupMenu.add(jMenuItem20);
    popupMenu.add(jMenuItem21);
    popupMenu.add(jMenuItem22);
    popupMenu.addSeparator();
    popupMenu.add(jMenu6);
    popupMenu.addSeparator();
    popupMenu.add(jMenuItem23);
    popupMenu.add(jMenuItem24);
    popupMenu.add(jMenuItem25);
    popupMenu.addSeparator();
    popupMenu.add(jMenuItem26);
    popupMenu.addSeparator();
    popupMenu.add(jMenuItem27);
    jMenu6.add(jMenuItem28);
    jMenu6.add(jRadioButtonMenuItem1);
    //createPopupMenu();
    this.setJMenuBar(jMenuBar1);
    this.getContentPane().add(popupMenu);
    contentText.addMouseListener(new MouseAdapter()
    {
      public void mouseClicked(MouseEvent e)
      {
        if(e.getModifiers()==Event.META_MASK)
        {
          popupMenu.show(contentText,e.getX(),e.getY());
        }
      }
    });
  }

  //复制操作
  public void jMenuItem7_actionPerformed(ActionEvent e)
  {
    contentText.copy();
  }

  void quitHandle()
  {
    int n;
    Object[] option =
        {
        "是", "否", "取消"};
    if (changed == true)
    {
      //打开消息对话框
      n = JOptionPane.showOptionDialog(null,
                                       "你的文件还没有保存,你想现在保存吗?",
                                       "保存",
                                       JOptionPane.YES_NO_CANCEL_OPTION,
                                       JOptionPane.QUESTION_MESSAGE,
                                       null,
                                       option,
                                       option[0]);
      switch (n)
      {
        case JOptionPane.YES_OPTION:
        {
          doSave(fileName); //保存文件然后退出
          System.exit(0);
        }
        case JOptionPane.NO_OPTION:
        {
          System.exit(0); //如果选择否则直接退出
        }
        case JOptionPane.CANCEL_OPTION:
        {
          break;
        }
        default:
      }
    }
  }

  public void jMenuItem3_actionPerformed(ActionEvent e)
  {
    quitHandle(); //调用退出处理方法
  }

  //****************************************************************************
   //这个类中类是为了实现在文本框中删除或者添加时,使改变标志为true
   class DocumentChangedHandle
       implements DocumentListener
   {
     public void insertUpdate(DocumentEvent e)
     {
       changed = true;
     }

     public void removeUpdate(DocumentEvent e)
     {
       changed = true;
     }

     public void changedUpdate(DocumentEvent e)
     {
       changed = true;
     }
   }

  //保存功能实现
  private void doSave(String fileName)
  {
    FileOutputStream fos = null;
    if (fileName == null)
    {
      doSaveAs();
    }
    else
    {
      String str = contentText.getText();
      try
      {
        fos = new FileOutputStream(fileName);
        fos.write(str.getBytes());
      }
      catch (IOException e)
      {
      }
      finally
      {
        try
        {
          fos.close();
        }
        catch (IOException e2)
        {
        }
      }
      stateLabel.setText(fileName + "  文件大小为:" + (new File(fileName)).length() +
                         " 字节"); //在状态栏上设置当前文件
      changed = false;
    }
  }

  //另存为功能实现
  private void doSaveAs()
  {
    FileOutputStream fos = null;
    String str = contentText.getText();
    jfc.showSaveDialog(this);
    //jfc.addChoosableFileFilter(new FileFilter());//添加文件过滤
    if (jfc.getSelectedFile() == null || jfc.getSelectedFile().toString() == "")
    {
      return;
    }
    fileName = jfc.getSelectedFile().toString();
    try
    {
      fos = new FileOutputStream(fileName);
      fos.write(str.getBytes());
    }
    catch (IOException e)
    {
    }
    finally
    {
      try
      {
        fos.close();
      }
      catch (IOException e2)
      {
      }
    }
    changed = false;
  }

  //****************************************************************************

   public void jMenuItem4_actionPerformed(ActionEvent e)
   {
     if (!fontSetting.isVisible())
     {
       fontSetting.setVisible(true);
     }
     else
     {
       //如果窗口正在显示,则不用设置显示,将此窗口显示在最前面
       fontSetting.toFront();
     }
   }

  void autoLineWrapItem_stateChanged(ChangeEvent e)
  {
    if (autoLineWrapItem.isSelected())
    {
      contentText.setLineWrap(true);
    }
    else
    {
      contentText.setLineWrap(false);
    }
  }

  void jMenuItem6_actionPerformed(ActionEvent e)
  {
    //以弹出提示对话框的形式说明本软件的一些简单信息
    String helpMessage = "此软件实为2001级计算机科学与技术专业面向对象程序设计" + '\n'
        + "第一组的程序设计,具体要求是模仿windows的记事本,做" + '\n'
        + "一个文字处理器,要求能对文本进行字体的选择,字号的设" + '\n'
        + "定,字体颜色的的设置等操作,同时要实现打开与保存功能" + '\n'
        + "组长:谭正辉  成员:海航 苏运敏 黄锋 邹宁 陈瑞佳 林" + '\n'
        + "猛 崔林 吴石林 林继青 周娴 羊吉兰***************" + '\n'; ;
    ShowECM.showMessage(helpMessage, "帮助系统");
  }

  //全选操作
  void jMenuItem11_actionPerformed(ActionEvent e)
  {
    contentText.selectAll();
  }

  //剪切操作
  void jMenuItem8_actionPerformed(ActionEvent e)
  {
    contentText.cut();
  }

  //粘贴操作
  void jMenuItem9_actionPerformed(ActionEvent e)
  {
    contentText.paste();
  }

  void jMenuItem10_actionPerformed(ActionEvent e)
  {
    /*String s =contentText.getSelectedText();
       contentText.*/
    //用“”代替选择区域的字体,相当于删除
    contentText.replaceSelection("");
  }

  void jMenuItem5_actionPerformed(ActionEvent e)
  {
    createNewText();
    //结束新建菜单响应事件
  }

  private void createNewText() throws HeadlessException
  {
    int n;
    Object[] option =
        {
        "是", "否", "取消"};
    if (changed == true)
    {
      //打开消息对话框
      n = JOptionPane.showOptionDialog(null,
                                       "你的文件还没有保存,你想现在保存吗?",
                                       "保存",
                                       JOptionPane.YES_NO_CANCEL_OPTION,
                                       JOptionPane.QUESTION_MESSAGE,
                                       null,
                                       option,
                                       option[0]);
      switch (n)
      {
        case JOptionPane.YES_OPTION:

⌨️ 快捷键说明

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