基于Java界面开发的词法分析器(含实验报告,gitte地址)【纯开源,无需关注博主,无需付费,无需VIP】(一)

目录

一、写在前面(不想看直接第二步)

二、gitte与压缩包

三、运行结果

四、项目结构

五、具体代码

Cifa_analyise_SanYuan.java

Cifa_analyise.java

Dialog_keyWord_add.java

Dialog_keyWord_change.java

Dialog_keyWord_del.java

Dialog_zifuBiao_add.java

Dialog_zifuBiao_change.java

Dialog_zifubiao_del.java

一、写在前面(不想看直接第二步)

知道会没人看,但为了自我感动,还是写点废话吧。毕竟,原创不易~

点赞

二、gitte与压缩包

编译原理: 你好,新同学!编译原理实验

三、运行结果

四、项目结构

五、具体代码

Cifa_analyise_SanYuan.java

package text01;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Cifa_analyise_SanYuan {
	
	JFrame frame=new JFrame("单词三元组序列");
	JTable table;
	DefaultTableModel dtm;
	String title[]= {"行号","单词内容","单词种类"};
	String data[][]=new String[][] {};
	String no_MainString;
	
	void init(String Yuan) {
		frame.setVisible(true);
		frame.setBounds((1500-500)/2+50, (800-400)/2+50, 500, 400);
		frame.setResizable(true);	
		frame.setIconImage(new ImageIcon("src/data/image/词法分析三元序列图标.png").getImage());
		see_data(Yuan);
	}
	
	private void see_data(String Yuan) {
		no_MainString="";
		no_MainString+=Yuan;
		dtm=new DefaultTableModel(data,title) {
			@Override
			public boolean isCellEditable(int hang,int lie) {
				return false;
			}
		};
		add_data();
	}
	
	private void add_data() {		
		table=new JTable();
		String arr[]=new String[3] ;
		String arr2[]=no_MainString.split("\n");		
		String Real[][]=new String[5000][100];
		int Real_len[]=new int[5000];
		
		//数据分割
		for(int i=0;i<arr2.length;i++) {			
			//每行字符串的个数
			int k=0;
			int zuoBiao=0;			
			//查找第一个非空格字符
			for(int j=0;j<arr2[i].length();j++) {
				if(!(arr2[i].charAt(j)+"").equals(" ")) {
					zuoBiao=j;
					break;
				}
			}			
			//分割字符串存到数组
			for(int j=zuoBiao;j<arr2[i].length();j++) {
				if((arr2[i].charAt(j)>='a'&&arr2[i].charAt(j)<='z')||(arr2[i].charAt(j)>='A'&&arr2[i].charAt(j)<='Z')){
					for(;j<arr2[i].length();j++) {
						if((arr2[i].charAt(j)>='a'&&arr2[i].charAt(j)<='z')||(arr2[i].charAt(j)>='A'&&arr2[i].charAt(j)<='Z')
								||(arr2[i].charAt(j)>='0'&&arr2[i].charAt(j)<='9')) {
							if(Real[i][k]==null)
								//刚开始的内容可能为空但空会保存为null字符串
								Real[i][k]="";
							Real[i][k]+=arr2[i].charAt(j);
						}
						else {
							//由于外层有循环所以会再加1
							j--;
							break;
						}						
					}
					k++;
				}
				else if(arr2[i].charAt(j)>='0'&&arr2[i].charAt(j)<='9') {
					for(;j<arr2[i].length();j++) {						
						if(arr2[i].charAt(j)>='0'&&arr2[i].charAt(j)<='9') {
							if(Real[i][k]==null)
								Real[i][k]="";
							Real[i][k]+=arr2[i].charAt(j);
						}
						else {
							j--;
							break;
						}						
					}
					k++;
				}
				else if((""+arr2[i].charAt(j)).equals(" ")){
					for(;j<arr2[i].length();j++) {
						if(!(""+arr2[i].charAt(j)).equals(" ")) {
							j--;
							break;
						}							
					}
				}
				else {
					if(Real[i][k]==null)
						Real[i][k]="";
					Real[i][k]+=arr2[i].charAt(j);
					k++;
				}
				Real_len[i]=k;
			}
		}		
		
		//单一字符-->双字符
		for(int i=0;i<arr2.length;i++) {
			for(int j=0;j<Real_len[i]-1;j++) {
				if((""+Real[i][j]).equals(":")&&(""+Real[i][j+1]).equals("=")) {
					Real[i][j+1]=null;
					Real[i][j]=":=";
				}
				if((""+Real[i][j]).equals(".")&&(""+Real[i][j+1]).equals(".")){
					Real[i][j+1]=null;
					Real[i][j]="..";
				}
			}
		}
		//将空的字符串进行消除
		for(int i=0;i<arr2.length;i++) {
			//去重次数
			int k=0;
			for(int j=0;j<Real_len[i];j++) {
				if(Real[i][j]==null) {
					k++;
					for(int q=j;q<Real_len[i]-1;q++){
						Real[i][q]=Real[i][q+1];
					}
					j--;
				}
			}
			Real_len[i]-=k;
		}
		for(int i=0;i<arr2.length;i++) {
			int id=i+1;
			arr[0]=""+id;
			for(int j=0;j<Real_len[i];j++) {				
				arr[1]=Real[i][j];
				arr[2]=new Way().cifa_analysie_format(arr[1]);
				dtm.addRow(arr);
				table.setModel(dtm);
			}
		}		
		frame.add(table);
		JScrollPane jsp=new JScrollPane(table);
		frame.add(jsp);
	}
}

Cifa_analyise.java

package text01;

import java.awt.FileDialog;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;

public class Cifa_analyise {
	
	String data_file_String;
	JFrame frame=new JFrame("词法分析DFA");	
	TextArea taArea;
	JMenuBar menuBar;
	JMenuItem fileItem;
	JMenuItem analyiseItem;
	JMenuItem Zhushi_Item;
	JDialog dialog;
	FileDialog fileDialog;
	File file;
	
	void init(){
		frame.setVisible(true);
		frame.setResizable(true);
		frame.setBounds((1500-800)/2+50, (800-600)/2+50, 800, 600);	
		frame.setIconImage(new ImageIcon("src/data/image/DFA图标.jpg").getImage());		
		menuBar=new JMenuBar();
		fileItem=new JMenuItem("导入文件");	
		menuBar.add(fileItem);
		taArea=new TextArea("");
		taArea.setFont(new Font("楷体",Font.BOLD,15));
		fileItem.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				fileDialog=new FileDialog(frame, "选择导入的文件",fileDialog.LOAD);
				fileDialog.setVisible(true);
				file=new File(fileDialog.getDirectory(), fileDialog.getFile());
				data_file_String=new Way().Read_Data(file);
				taArea.setText(data_file_String);
			}
		});
		
		analyiseItem=new JMenuItem("三元序列");
		menuBar.add(analyiseItem);
		analyiseItem.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				if(taArea.getText()==null||taArea.getText().length()==0) {
					JOptionPane.showMessageDialog(frame, "输入内容为空!");
				}
				else {
					new Cifa_analyise_SanYuan().init(taArea.getText());					
				}
			}
		});
		
		Zhushi_Item=new JMenuItem("取消注释");
		menuBar.add(Zhushi_Item);
		Zhushi_Item.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String yuan=taArea.getText();
				yuan=new Way().cifa_analyise_del(yuan);		
				taArea.setText(yuan);
				}
		});		
		frame.add(taArea);
		frame.setJMenuBar(menuBar);
	}
}

Dialog_keyWord_add.java

package text01;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Dialog_keyWord_add extends JDialog{
	public Dialog_keyWord_add(JFrame jf,String title,boolean isModel,String Yuan) {
		
		super(jf, title, isModel);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);
		Box mainBox=Box.createVerticalBox();		
		Box nameBox=Box.createHorizontalBox();
		JLabel label=new JLabel("内容:");
		nameBox.add(Box.createHorizontalStrut(20));
		nameBox.add(label);
		JTextField tf=new JTextField(1);
		mainBox.add(Box.createVerticalStrut(20));
		nameBox.add(Box.createHorizontalStrut(20));
		nameBox.add(tf);
		nameBox.add(Box.createHorizontalStrut(30));
		mainBox.add(nameBox);
		mainBox.add(Box.createVerticalStrut(20));
		//添加
		Box btnBox=Box.createHorizontalBox();
		JButton button=new JButton("添加");
		button.setBackground(new Color(133, 224, 255));
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		btnBox.add(Box.createHorizontalStrut(30));
		btnBox.add(button);
		mainBox.add(btnBox);
		mainBox.add(Box.createVerticalStrut(20));
		this.add(mainBox);
		
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String addString=tf.getText();
				String change_String;
				if(addString.length()==0||addString==null){
					JOptionPane.showMessageDialog(jf, "添加失败!\n没有数据");
				}
				else if(new Way().ZiChuan_find(Yuan, addString)) {
					JOptionPane.showMessageDialog(jf, "添加失败!\n关键字中已存在内容");
				}
				else {
					String arr[]=new String[] {};
					change_String=Yuan+addString+",";								
					new Way().Wrtie_Data(change_String, "src/data/关键字表.txt");
					JOptionPane.showMessageDialog(jf, "字符表\n添加"+addString+"成功!");
			        jf.setVisible(false);
				}
			}
		});
	}
}

Dialog_keyWord_change.java

package text01;

import java.awt.Color;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Dialog_keyWord_change extends JDialog{
	public Dialog_keyWord_change(JFrame jf,String title,boolean isModeal,String Yuan) {
		
		super(jf,title,isModeal);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);		
		Box vbox=Box.createVerticalBox();
		Box hBox=Box.createHorizontalBox();
		JLabel label=new JLabel("ID");
		TextField tf=new TextField(1);
		hBox.add(Box.createHorizontalStrut(40));
		hBox.add(label);
		hBox.add(Box.createHorizontalStrut(45));
		hBox.add(tf);
		hBox.add(Box.createHorizontalStrut(70));
		vbox.add(Box.createVerticalStrut(15));
		vbox.add(hBox);
		Box h2Box=Box.createHorizontalBox();
		JLabel label2=new JLabel("改后字符");
		TextField tf2=new TextField(1);
		h2Box.add(Box.createHorizontalStrut(15));
		h2Box.add(label2);
		h2Box.add(Box.createHorizontalStrut(10));
		h2Box.add(tf2);		
		h2Box.add(Box.createHorizontalStrut(40));
		vbox.add(Box.createVerticalStrut(10));
		vbox.add(h2Box);
		JButton button=new JButton("修改");
		Box h3Box=Box.createHorizontalBox();
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		button.setBackground(new Color(133, 224, 255));
		h3Box.add(Box.createHorizontalStrut(25));
		h3Box.add(button);
		vbox.add(Box.createVerticalStrut(10));
		vbox.add(h3Box);
		vbox.add(Box.createVerticalStrut(10));
		this.add(vbox);
		
		button.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String id_String=tf.getText();
				String change_String=tf2.getText();
				String arr[]=Yuan.split(",");
				if(id_String==null||id_String.length()==0) {
					JOptionPane.showMessageDialog(jf, "I修改失败!\nID里面没有内容");
				}
				else if(!new Way().isNumeric(id_String)){
					JOptionPane.showMessageDialog(jf,"修改失败!\nID不为数字类型");
				}
				else {
					int ID=Integer.parseInt(id_String);
					if(ID<1||ID>arr.length)
						JOptionPane.showMessageDialog(jf, "修改失败!\nID超出范围");
					else if(change_String.length()==0){
						JOptionPane.showMessageDialog(jf, "修改失败\n修改后的字符串内容不能为空");
					}
					else if(new Way().ZiChuan_find(Yuan, change_String)) {//添加字符
						JOptionPane.showMessageDialog(jf, "修改失败!\n该字符串在原表中已存在");
					}
					else {
						String op=arr[ID-1];
						String content=Yuan.replace(""+op,change_String);
						new Way().Wrtie_Data(content,"src/data/关键字表.txt");
						JOptionPane.showMessageDialog(jf, "修改成功\n"+"原 ID:"+ID+" 字符串:"+op+"\n"+"现 ID:"+ID+" 字符串:"+change_String);
						jf.setVisible(false);
					}
				}
			}
		});
	}
}

Dialog_keyWord_del.java

package text01;

import java.awt.Color;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Dialog_keyWord_del extends JDialog{
	public Dialog_keyWord_del(JFrame jf,String title,boolean isModel,String Yuan) {
		
		super(jf,title,isModel);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);		
		Box vbox=Box.createVerticalBox();
		Box hbox=Box.createHorizontalBox();
		JLabel label=new JLabel("ID");
		hbox.add(Box.createHorizontalStrut(35));
		hbox.add(label);
		hbox.add(Box.createHorizontalStrut(30));
		TextField tf=new TextField(1);
		hbox.add(tf);
		hbox.add(Box.createHorizontalStrut(70));
		vbox.add(Box.createVerticalStrut(25));
		vbox.add(hbox);
		vbox.add(Box.createHorizontalStrut(10));
		vbox.add(Box.createVerticalStrut(20));		
		Box pbox=Box.createHorizontalBox();
		JButton button=new JButton("删除ID");
		button.setBackground(new Color(133, 224, 255));
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		pbox.add(Box.createHorizontalStrut(5));
		pbox.add(button);
		vbox.add(pbox);
		vbox.add(Box.createVerticalStrut(20));		
		this.add(vbox);
		
		button.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String del_String=tf.getText();
				String arr[]=Yuan.split(",");
				if(del_String.length()==0||del_String==null) {
					JOptionPane.showMessageDialog(jf,"删除失败!\n没有数据");
				}
				else if(!new Way().isNumeric(del_String)) {
					JOptionPane.showMessageDialog(jf,"删除失败!\n删除内容不为数字类型");
				}
				else {
					int ID=Integer.parseInt(del_String);
					if(ID<1||ID>arr.length) {
						JOptionPane.showMessageDialog(jf, "删除失败!\nID超出范围");
					}
					else{
						JOptionPane.showMessageDialog(jf, "删除ID:"+ID+"成功");
						String del_afterString=del(Yuan,ID-1);
						new Way().Wrtie_Data(del_afterString,"src/data/关键字表.txt");
						System.out.println("删除后的字符串-----"+del_afterString+"--------");						
						jf.setVisible(false);
					}
				}			
			}
		});
	}
	
	private String del(String Yuan,int index) {
		String after_String="";
		String arr[]=Yuan.split(",");
		for(int i=0;i<Yuan.indexOf(arr[index]);i++) {
			after_String+=Yuan.charAt(i);
		}
		for(int i=Yuan.indexOf(arr[index])+arr[index].length()+1;i<Yuan.length();i++) {
			after_String+=Yuan.charAt(i);
		}
		return after_String;
	}
}

Dialog_zifuBiao_add.java

package text01;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Dialog_zifuBiao_add extends JDialog{
	public Dialog_zifuBiao_add(JFrame jf,String title,boolean isModel,String NOT_main_string) {
		
		super(jf,title,isModel);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);		
		Box mainBox=Box.createVerticalBox();
		Box nameBox=Box.createHorizontalBox();
		JLabel label=new JLabel("内容:");
		nameBox.add(Box.createHorizontalStrut(20));
		nameBox.add(label);
		JTextField tf=new JTextField(15);
		mainBox.add(Box.createVerticalStrut(20));
		nameBox.add(Box.createHorizontalStrut(30));
		nameBox.add(tf);
		nameBox.add(Box.createHorizontalStrut(65));
		mainBox.add(nameBox);
		mainBox.add(Box.createVerticalStrut(20));		
		Box btnBox=Box.createHorizontalBox();
		JButton button=new JButton("添加");
		button.setBackground(new Color(255, 228, 196));
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		btnBox.add(Box.createHorizontalStrut(10));
		btnBox.add(button);
		mainBox.add(btnBox);
		mainBox.add(Box.createVerticalStrut(20));
		this.add(mainBox);
		
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String addString=tf.getText();
				String change_String;
				if(addString.length()>1) {
					JOptionPane.showMessageDialog(jf, "添加失败!\n只能添加单字符");
				}
				else if(addString.length()==0||addString==null){
					JOptionPane.showMessageDialog(jf, "添加失败!\n没有数据");
				}
				else if(CZ(addString,NOT_main_string)==0) {
					JOptionPane.showMessageDialog(jf, "添加失败!\n字符表中已存在内容");
				}
				else {
					change_String=NOT_main_string+addString;					
					JOptionPane.showMessageDialog(jf, "字符表\n添加"+addString+"成功!");
					new Way().Wrtie_Data(change_String, "src/data/字符表.txt");
			        jf.setVisible(false);//添加数据后不点击x依旧可以添加重复数据,和线程有关系,所以只能隐藏frame打开再显示
				}
			}
		});
	}
	private int CZ(String addString,String NOT_main_string) {
		if(NOT_main_string.indexOf(addString)==-1)
			return 1;
		return 0;
	}
}

Dialog_zifuBiao_change.java

package text01;

import java.awt.Color;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Dialog_zifuBiao_change extends JDialog{
	public Dialog_zifuBiao_change(JFrame jf,String title,boolean isModel,String nOT_main_String) {
		
		super(jf,title,isModel);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);		
		Box vbox=Box.createVerticalBox();
		Box hBox=Box.createHorizontalBox();
		JLabel label=new JLabel("ID");
		TextField tf=new TextField(1);
		hBox.add(Box.createHorizontalStrut(35));
		hBox.add(label);
		hBox.add(Box.createHorizontalStrut(30));
		hBox.add(tf);
		hBox.add(Box.createHorizontalStrut(70));
		vbox.add(Box.createVerticalStrut(15));
		vbox.add(hBox);
		Box h2Box=Box.createHorizontalBox();
		JLabel label2=new JLabel("改后字符");
		TextField tf2=new TextField(1);
		h2Box.add(Box.createHorizontalStrut(15));
		h2Box.add(label2);
		h2Box.add(Box.createHorizontalStrut(10));
		h2Box.add(tf2);		
		h2Box.add(Box.createHorizontalStrut(70));
		vbox.add(Box.createVerticalStrut(10));
		vbox.add(h2Box);
		JButton button=new JButton("修改");
		Box h3Box=Box.createHorizontalBox();
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		button.setBackground(new Color(255, 228, 196));
		h3Box.add(button);
		vbox.add(Box.createVerticalStrut(10));
		vbox.add(h3Box);
		vbox.add(Box.createVerticalStrut(10));
		this.add(vbox);
		
		button.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String id_String=tf.getText();
				String zifu_String=tf2.getText();
				if(id_String==null||id_String.length()==0) {
					JOptionPane.showMessageDialog(jf, "I修改失败!\nID里面没有内容");
				}
				else if(!new Way().isNumeric(id_String)){
					JOptionPane.showMessageDialog(jf,"修改失败!\nID不为数字类型");
				}
				else {
					int ID=Integer.parseInt(id_String);
					if(ID<1||ID>nOT_main_String.length())
						JOptionPane.showMessageDialog(jf, "修改失败!\nID超出范围");
					else if(zifu_String.length()==0){
						JOptionPane.showMessageDialog(jf, "修改失败\n修改后的字符内容不能为空");
					}
					else if(nOT_main_String.indexOf(zifu_String)!=-1) {//添加字符
						JOptionPane.showMessageDialog(jf, "修改失败!\n该字符在原表中已存在");
					}
					else  if(zifu_String.length()>1){
						JOptionPane.showMessageDialog(jf, "修改失败\n修改后的字符只能有1位");
					}
					else {
						String op=""+nOT_main_String.charAt(ID-1);
						String content=nOT_main_String.replace(""+nOT_main_String.charAt(ID-1),zifu_String);
						new Way().Wrtie_Data(content,"src/data/字符表.txt");
						JOptionPane.showMessageDialog(jf, "修改成功\n"+"原 ID:"+ID+" 字符:"+op+"\n"+"现 ID:"+ID+" 字符:"+zifu_String);
						jf.setVisible(false);
					}
				}
			}
		});
	}
}

Dialog_zifubiao_del.java

package text01;

import java.awt.Color;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

public class Dialog_zifubiao_del extends JDialog{
	public Dialog_zifubiao_del(JFrame jf,String title,boolean isModeal,String NOT_main_string) {
		
		super(jf,title,isModeal);
		this.setBounds((1500-200)/2+50, (800-150)/2+50, 200, 150);		
		Box vbox=Box.createVerticalBox();
		Box hbox=Box.createHorizontalBox();
		JLabel label=new JLabel("ID");
		hbox.add(Box.createHorizontalStrut(35));
		hbox.add(label);
		hbox.add(Box.createHorizontalStrut(30));
		TextField tf=new TextField(1);
		hbox.add(tf);
		hbox.add(Box.createHorizontalStrut(70));
		vbox.add(Box.createVerticalStrut(25));
		vbox.add(hbox);
		vbox.add(Box.createHorizontalStrut(10));
		vbox.add(Box.createVerticalStrut(20));		
		Box pbox=Box.createHorizontalBox();
		JButton button=new JButton("删除ID");
		button.setBackground(new Color(255, 228, 196));
		button.setBorder(BorderFactory.createRaisedBevelBorder());
		pbox.add(Box.createHorizontalStrut(5));
		pbox.add(button);
		vbox.add(pbox);
		vbox.add(Box.createVerticalStrut(20));		
		this.add(vbox);
		
		button.addActionListener(new ActionListener() {			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String del_String=tf.getText();
				if(del_String.length()==0||del_String==null) {
					JOptionPane.showMessageDialog(jf,"删除失败!\n没有数据");
				}
				else if(!new Way().isNumeric(del_String)) {
					JOptionPane.showMessageDialog(jf,"删除失败!\n删除内容不为数字类型");
				}
				else {
					int ID=Integer.parseInt(del_String);
					if(ID<1||ID>NOT_main_string.length()) {
						JOptionPane.showMessageDialog(jf, "删除失败!\nID超出范围");
					}
					else{
						JOptionPane.showMessageDialog(jf, "删除ID:"+ID+"成功");
						String del_afterString=del(NOT_main_string,ID-1);
						new Way().Wrtie_Data(del_afterString,"src/data/字符表.txt");
						System.out.println("删除后的字符串-----"+del_afterString+"--------");						
						jf.setVisible(false);
					}
				}				
			}

		});
	}
	
	//删除指定位置字符,并返回删除后的新数据
	private String del (String Yuan,int index) {
		String DEL_after="";
			//DEL_after=DEL_after+Yuan.substring(1);//sub似乎有问题重写吧如果加入的第一个数据 是空格那不会加进去
			for(int i=0;i<=index-1;i++) {
				DEL_after+=Yuan.charAt(i);
			}
			for(int i=index+1;i<Yuan.length();i++) {
				DEL_after+=Yuan.charAt(i);
			}
		return DEL_after;
	}
}

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值