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

📄 transformframe.java

📁 从正则表达式到NFA的JAVA实现代码
💻 JAVA
字号:
 package reg2nfa;

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * <p>Title: Regular Expression to NFA</p>
 *
 * <p>Description: A program using to pase regular expression to NFA, or else
 * deeply into DFA</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: Onlyer Corporation</p>
 *
 * @author Onlyer Lee
 * @version 1.0
 */
public class TransformFrame
    extends JFrame {
  TransformModel transModel = null;
  TransformView transView = null;
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  JMenuBar jMenuBar1 = new JMenuBar();
  JMenu fileMenu = new JMenu();
  JMenuItem saveMenuItem = new JMenuItem();
  JMenuItem exitMenuItem = new JMenuItem();
  JMenu convertMenu = new JMenu();
  JMenuItem expMenuItem = new JMenuItem();
  JMenuItem nfaMenuItem = new JMenuItem();
  JMenuItem dfaMenuItem = new JMenuItem();
  JMenu helpMenu = new JMenu();
  JMenuItem AboutMenuItem = new JMenuItem();
  JLabel regExpLabel = new JLabel();

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

  /**
   * Component initialization.
   *
   * @throws java.lang.Exception
   */
  private void jbInit() throws Exception {
    //boolean bool = transModel.setRegExpression(regStr);
    //if(bool) transModel.createNFA();
    contentPane = (JPanel) getContentPane();
    contentPane.setLayout(borderLayout1);
    setJMenuBar(jMenuBar1);
    fileMenu.setMnemonic('F');
    fileMenu.setText("File");
    saveMenuItem.setEnabled(false);
    saveMenuItem.setMnemonic('S');
    saveMenuItem.setText("Save");
    exitMenuItem.setMnemonic('X');
    exitMenuItem.setText("Exit");
    convertMenu.setMnemonic('C');
    convertMenu.setText("Convert");
    expMenuItem.setMnemonic('E');
    expMenuItem.setText("Reg Exp");
    expMenuItem.addActionListener(new TransformFrame_expMenuItem_actionAdapter(this));
    nfaMenuItem.setEnabled(false);
    nfaMenuItem.setMnemonic('N');
    nfaMenuItem.setText("To NFA");
    nfaMenuItem.addActionListener(new TransformFrame_nfaMenuItem_actionAdapter(this));
    dfaMenuItem.setEnabled(false);
    dfaMenuItem.setText("To DFA");
    helpMenu.setMnemonic('H');
    helpMenu.setText("Help");
    AboutMenuItem.setMnemonic('A');
    AboutMenuItem.setText("About");
    regExpLabel.setBackground(SystemColor.infoText);
    regExpLabel.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 17));
    regExpLabel.setForeground(Color.blue);
    contentPane.setBackground(Color.cyan);
    //contentPane.add(transView, BorderLayout.CENTER);
    jMenuBar1.add(fileMenu);
    jMenuBar1.add(convertMenu);
    jMenuBar1.add(helpMenu);
    fileMenu.add(saveMenuItem);
    fileMenu.add(exitMenuItem);
    convertMenu.add(expMenuItem);
    convertMenu.add(nfaMenuItem);
    convertMenu.add(dfaMenuItem);
    helpMenu.add(AboutMenuItem);
    contentPane.add(regExpLabel, java.awt.BorderLayout.NORTH);
    setSize(new Dimension(400, 300));
    setTitle("Convert to NFA");
  }

  public void expMenuItem_actionPerformed(ActionEvent e) {
    expMenuItem_action();
  }

  public void nfaMenuItem_actionPerformed(ActionEvent e) {
    nfaMenuItem_action();
  }

  private void expMenuItem_action() {
    String regStr = JOptionPane.showInputDialog("Input The Regular Expression:");
    if(regStr == null)   return;
    transModel = new TransformModel();
    regExpLabel.setText(regStr);

    if(transModel.setRegExpression(regStr)) {
      nfaMenuItem.setEnabled(true);
    }
    if(transView != null)  {
      contentPane.remove(transView);
      this.validate();
    }
    transView = new TransformView(transModel);
  }

  private void nfaMenuItem_action() {
    if(nfaMenuItem.isEnabled()) {
      contentPane.add(transView, java.awt.BorderLayout.CENTER);
      transModel.createNFA();

      //transView.repaint();
      this.validate();
    }
  }
}

class TransformFrame_nfaMenuItem_actionAdapter
    implements ActionListener {
  private TransformFrame adaptee;
  TransformFrame_nfaMenuItem_actionAdapter(TransformFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.nfaMenuItem_actionPerformed(e);
  }
}

class TransformFrame_expMenuItem_actionAdapter
    implements ActionListener {
  private TransformFrame adaptee;
  TransformFrame_expMenuItem_actionAdapter(TransformFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.expMenuItem_actionPerformed(e);
  }
}

⌨️ 快捷键说明

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