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

📄 analyser.java

📁 词法分析器
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Analyser extends JFrame{
	private JLabel inputLabel,outputLabel,imageLabel;
	private JButton open,scan,save,clear,exit,help,about;
	protected JTextArea inputArea,outputArea;
	private JScrollPane input,output;
	private Scaner scaner;
	//构造函数,用于界面初始化
	public Analyser()
	{
		//使用本机系统外观(如果有一个)的 LookAndFeel 类的名称设置当前的默认外观。
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
			SwingUtilities.updateComponentTreeUI(this);
		} catch (Exception e) {}

		//设置菜单栏及其菜单项
		JMenuBar bar=new JMenuBar();
		setJMenuBar(bar);
		//文件菜单栏及其菜单项
		JMenu fileMenu=new JMenu("文件");
		JMenuItem openItem=new JMenuItem("打开");
		openItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.openFile();
			}
		});
		fileMenu.add(openItem);
		JMenuItem saveItem=new JMenuItem("保存结果");
		saveItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.saveFile();
			}
		});
		fileMenu.add(saveItem);
		fileMenu.addSeparator();	//设置菜单项分隔线
		JMenuItem exitItem=new JMenuItem("退出");
		exitItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		fileMenu.add(exitItem);
		bar.add(fileMenu);
		//操作菜单栏及其菜单项
		JMenu executeMenu=new JMenu("操作");
		JMenuItem scanItem=new JMenuItem("扫描");
		scanItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.scan();
			}
		});
		executeMenu.add(scanItem);
		JMenuItem clearItem=new JMenuItem("清空");
		clearItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.clear();
			}
		});
		executeMenu.add(clearItem);
		bar.add(executeMenu);
		//帮助菜单栏及其菜单项
		JMenu helpMenu=new JMenu("帮助");
		JMenuItem useItem=new JMenuItem("如何使用");
		useItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
					scaner.help();
			}
		});
		helpMenu.add(useItem);
		helpMenu.addSeparator();	//设置菜单项分隔线
		JMenuItem aboutItem=new JMenuItem("关于...");
		aboutItem.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
					scaner.about();
			}
		});
		helpMenu.add(aboutItem);
		bar.add(helpMenu);
		//设置布局为null
		setLayout(null);
		//按钮组的设置
		open=new JButton(new ImageIcon("image\\open.gif"));
		open.setToolTipText("打开文件");
		scan=new JButton(new ImageIcon("image\\execute.gif"));
		scan.setToolTipText("执行扫描");
		save=new JButton(new ImageIcon("image\\save.gif"));
		save.setToolTipText("保存结果");
		clear=new JButton(new ImageIcon("image\\clear.gif"));
		clear.setToolTipText("清除屏幕");
		exit=new JButton(new ImageIcon("image\\exit.gif"));
		exit.setToolTipText("退出程序");
		help=new JButton(new ImageIcon("image\\help.gif"));
		help.setToolTipText("帮助");
		about=new JButton(new ImageIcon("image\\about.gif"));
		about.setToolTipText("关于");
		open.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.openFile();
			}
		});
		open.setBounds(5,4,31,25);
		add(open);
		scan.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.scan();
			}
		});
		scan.setBounds(46,4,31,25);
		add(scan);
		save.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.saveFile();
			}
		});
		save.setBounds(87,4,29,26);
		add(save);
		clear.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.clear();
			}
		});
		clear.setBounds(126,4,31,25);
		add(clear);
		exit.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
		exit.setBounds(167,4,31,25);
		add(exit);
		about.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.about();
			}
		});
		about.setBounds(208,4,31,25);
		add(about);
		help.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				scaner.help();
			}
		});
		help.setBounds(249,8,48,18);
		add(help);
		//标签和文本区域的设置
		imageLabel=new JLabel(new ImageIcon("image\\image.gif"));
		imageLabel.setToolTipText("这是个用Java编写的词法分析器");
		imageLabel.setBounds(445,0,89,35);
		add(imageLabel);
		//顶部输入区域的设置
		inputLabel=new JLabel("输入区域");
		inputLabel.setFont(new Font("ScanSerif",Font.PLAIN,14));
		inputLabel.setBounds(5,37,70,25);
		add(inputLabel);
		inputArea=new JTextArea(25,11);
		inputArea.setForeground(new Color(50,30,230));
		inputArea.setFont(new Font("Monospaced",Font.PLAIN,15));
		input=new JScrollPane(inputArea);
		input.setBounds(5,60,533,300);
		add(input);
		//底部输出结果的设置
		outputLabel=new JLabel("输出结果");
		outputLabel.setFont(new Font("ScanSerif",Font.PLAIN,14));
		outputLabel.setBounds(5,363,70,25);
		add(outputLabel);
		outputArea=new JTextArea(25,11);
		outputArea.setForeground(new Color(50,40,230));
		outputArea.setFont(new Font("Monospaced",Font.PLAIN,14));
		outputArea.setEditable(false);
		output=new JScrollPane(outputArea);
		output.setBounds(5,387,533,120);
		add(output);
		//程序显示设置
		setTitle("词法分析器");
		setVisible(true);
		setResizable(false);
		setBounds(300,100,550,570);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		validate();	//当重新添加新子控件时,调用此方法来使添加生效,相当于刷新
		scaner=new Scaner(this);	//为该程序添加控制器,控制器主要完成后台工作
	}

	public static void main(String[] args)
	{
		new Analyser();	//启动程序
	}

}

⌨️ 快捷键说明

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