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