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

📄 datatestface.java

📁 数据挖掘算法的实现
💻 JAVA
字号:
import java.awt.Container;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.StringTokenizer;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import java.math.*;
public class DataTestFace implements ActionListener
{
	private static final int WINDOW_WIDTH=450;
    private static final int WINDOW_HEIGHT=220;
    private static final int FILED_WIDTH=22;
    
    private JFrame window;
    private JLabel InputLable,OutputLabel;
    private JTextField InputField,OutputField;
    private JButton test,quit,going;
    
    private Data newTestData = new Data();  //存储被测试数据
     
    public DataTestFace()
    {
    	window=new JFrame("入侵检测系统:测试新数据");
        window.setSize(WINDOW_WIDTH,WINDOW_HEIGHT);
        window.setFont(new Font("Simsun",Font.PLAIN,14));
        
        Container c=window.getContentPane();
        c.setLayout(new GridBagLayout());
        GridBagConstraints gc=new GridBagConstraints();  
             
        InputLable=new JLabel("输入测试数据");
        InputLable.setFont(new Font("Simsun",Font.PLAIN,14));
        InputField=new JTextField(FILED_WIDTH);
        gc.gridx=0;
        gc.gridy=1;
        gc.gridwidth=1;
        c.add(InputLable,gc);
        gc.gridx=1;
        gc.gridy=1;
        c.add(InputField,gc);
        
        OutputLabel=new JLabel("新数据类型输出");
        OutputLabel.setFont(new Font("Simsun",Font.PLAIN,14));
        OutputField=new JTextField(FILED_WIDTH);      
        gc.gridx=0;
        gc.gridy=2;
        gc.gridwidth=1;
        c.add(OutputLabel,gc);
        gc.gridx=1;
        gc.gridy=2;
        c.add(OutputField,gc);
                 
      JPanel panel=new JPanel();
      test=new JButton("测试");
      test.setFont(new Font("Simsun",Font.PLAIN,14));
      test.addActionListener(this);
      test.setActionCommand("test");
      panel.add(test);
      going=new JButton("继续");
      going.setFont(new Font("Simsun",Font.PLAIN,14));
      going.addActionListener(this);
      going.setActionCommand("going");
      panel.add(going);
      quit=new JButton("退出");
      quit.setFont(new Font("Simsun",Font.PLAIN,14));
      quit.addActionListener(this);
      quit.setActionCommand("quit");
      panel.add(quit);
      gc.gridx=0;
      gc.gridy=5;
      gc.gridwidth=2;
      c.add(panel,gc);
      
      window.setLocation(200,300);
      window.setVisible(true);
      window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
   public void actionPerformed(ActionEvent e)
   {
	   String s=e.getActionCommand();
	   if(s.equals("test"))
	     {
	    	 String tempbuffer = new String(); 
	    	 tempbuffer = InputField.getText();
	         StringTokenizer analyse = new StringTokenizer(tempbuffer,",");
	         int n = analyse.countTokens();//n = 10
	         System.out.println("n = "+n);
	 		for(int k = 0;k < n-1;k++)
	 		{
	 			tempbuffer = analyse.nextToken();
	 			newTestData.data[k] = Float.parseFloat(tempbuffer);
	 		}
	 		 System.out.println("test OK");	 		
            // for(int i = 0;i < n;i++)
              // System.out.println(newTestData.data[i]);
	 		 
	 		 double distance = GetDistance(0);
	 		 int j = 0;                 //与测试数据距离小的原数据的索引
	 		 for(int i = 1;i < ReadData.noSameNumber;i++)
	 		 {
	 			 if(distance > GetDistance(i))
	 			 {
	 				 distance = GetDistance(i);
	 				 j = i;
	 			 }
	 		 }
	 		 OutputField.setText(ReadData.dataArray[j].type);	 
	 		 DataTest.mOutput.append("数据"+InputField.getText()+"类型测试为:"+ReadData.dataArray[j].type+"\n");
	     } 
	   
	   
	   else if(s.equals("going"))
	     {
		  InputField.setText("");
		  OutputField.setText("");
		  System.out.println("going OK");
		  DataTest.mOutput.append("继续测试\n");
	     }
	   else
		   {
			  window.dispose(); 
		   }
    }
   private float GetDistance(int m)   //求被测试数据与已知数据间的距离
   {
	   double temp = 0;
	   for(int j = 0;j < DealData.attribute;j++)    //attribute为每条数据的数据属性个数
	   {
		   temp += Math.pow((newTestData.data[j] - ReadData.dataArray[m].data[j]),2);
	   }
	   return (float) temp;	   
   }
}

⌨️ 快捷键说明

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