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

📄 transformframe.java

📁 输入一个正则表达式
💻 JAVA
字号:
 package reg402;

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


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 exitMenuItem = new JMenuItem();
    JMenu helpMenu = new JMenu();
  JMenuItem AboutMenuItem = new JMenuItem();
  JLabel regExpLabel = new JLabel();
    JPanel jPanel1 = new JPanel();
    JTextField txtReg = new JTextField();
    JButton btnNfa = new JButton();
    JButton btnAccept = new JButton();
    JButton btnDfa = new JButton();
    BorderLayout borderLayout2 = new BorderLayout();
    JPanel jPanel2 = new JPanel();
    public TransformFrame() {
    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);
    setJMenuBar(jMenuBar1);
    fileMenu.setMnemonic('F');
    fileMenu.setText("File");
        exitMenuItem.setMnemonic('X');
    exitMenuItem.setText("Exit");
        exitMenuItem.addActionListener(new
                TransformFrame_exitMenuItem_actionAdapter(this));
        helpMenu.setMnemonic('H');
    helpMenu.setText("Help");
    AboutMenuItem.setMnemonic('A');
    AboutMenuItem.setText("About");
        AboutMenuItem.addActionListener(new
                TransformFrame_AboutMenuItem_actionAdapter(this));
        regExpLabel.setBackground(SystemColor.infoText);
    regExpLabel.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 17));
    regExpLabel.setForeground(Color.blue);
        txtReg.setColumns(50);
        btnNfa.setEnabled(false);
        btnNfa.setText("To NFA");
        btnNfa.addActionListener(new TransformFrame_btnNfa_actionAdapter(this));
        btnAccept.setText("Accept");
        btnAccept.addActionListener(new TransformFrame_btnAccept_actionAdapter(this));
        btnDfa.setEnabled(false);
        btnDfa.setText("To DFA");
        btnDfa.addActionListener(new TransformFrame_btnDfa_actionAdapter(this));
        contentPane.setBackground(Color.orange);
        jPanel1.setLayout(borderLayout2);
        jMenuBar1.add(fileMenu);
        jMenuBar1.add(helpMenu);
        fileMenu.add(exitMenuItem);
        helpMenu.add(AboutMenuItem);
        contentPane.add(regExpLabel, java.awt.BorderLayout.CENTER);
        contentPane.add(jPanel1, java.awt.BorderLayout.SOUTH);
        jPanel1.add(jPanel2, java.awt.BorderLayout.SOUTH);
        jPanel2.add(btnAccept);
        jPanel2.add(btnNfa);
        jPanel2.add(btnDfa);
        jPanel1.add(txtReg, java.awt.BorderLayout.NORTH);
        setSize(new Dimension(600,500));
    setTitle("402工作室");

  }

    public void btnAccept_actionPerformed(ActionEvent e) {

   String regStr=txtReg.getText();
   if(regStr.compareTo("")==0)
       {
           JOptionPane.showMessageDialog(null,"Please make sure that the input is not empty!");
           return;
       }
   transModel = new TransformModel();



   if(transModel.setRegExpression(regStr)) {
     btnNfa.setEnabled(true);
   }
   if(transView != null)  {

     contentPane.remove(transView);
     this.validate();
   }
   transView = new TransformView(transModel);
   //为transView加滚动窗格,但不知为何程序执行时没有显示
   JScrollPane sp=new JScrollPane(transView);
     contentPane.add(sp);
    }

    public void btnNfa_actionPerformed(ActionEvent e) {
        if(btnNfa.isEnabled()) {
          contentPane.add(transView, java.awt.BorderLayout.CENTER);
          //生成NFA
          transModel.createNFA();


          this.validate();
          btnDfa.setEnabled(true);
    }
    }

    public void AboutMenuItem_actionPerformed(ActionEvent e) {
        JOptionPane.showMessageDialog(null,"402工作室   陈泽成 谭建斌 郭剑聪 肖人瑞");
    }

    public void exitMenuItem_actionPerformed(ActionEvent e) {
        System.exit(0);
    }

    public void btnDfa_actionPerformed(ActionEvent e) {
        //显示转换表

        DfaFrame DF=new DfaFrame(transView.DfaTable);
        DF.setSize(750,300);
        DF.setVisible(true);
        DF.setTitle("402工作室");
    }
}


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

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


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

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


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

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


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

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


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

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



⌨️ 快捷键说明

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