import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Association extends JPanel implements ActionListener {
private JTextField jtf_apriori_1, jtf_apriori_2, jtf_apriori_3,
jtf_apriori_4, jtf_apriori_5, jtf_apriori_6;// Apriori算法单行文本域
private JTextArea jta_apriori_1, jta_apriori_2;// Apriori算法多行文本域
static JSlider slider,slider1;
FileDialog fd1;
public Association() {
this.setLayout(null);
JButton jb_apriori_1 = new JButton("Open File");
jb_apriori_1.setToolTipText("打开一个文本文件 ");
this.add(jb_apriori_1);
jb_apriori_1.setBounds(10, 20, 120, 25);
jb_apriori_1.addActionListener(this);
jb_apriori_1.setActionCommand("open_apriori");
jb_apriori_1.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_1 = new JTextField(15);
this.add(jtf_apriori_1);
jtf_apriori_1.setBounds(160, 20, 530, 25);
JButton jb_apriori_2 = new JButton("Apply");
jb_apriori_2.setToolTipText("将文本文件中的数据导入算法中 ");
this.add(jb_apriori_2);
jb_apriori_2.setBounds(690, 20, 90, 25);
jb_apriori_2.addActionListener(this);
jb_apriori_2.setActionCommand("导入_apriori");
jb_apriori_2.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 标签最小支持度
JLabel jl_apriori_6 = new JLabel(" minSupport:");
this.add(jl_apriori_6);
jl_apriori_6.setBounds(310, 90, 150, 25);
jl_apriori_6.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_2 = new JTextField(2);
this.add(jtf_apriori_2);
jtf_apriori_2.setBounds(475, 90, 50, 25);
jtf_apriori_2.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 18));
jtf_apriori_2.setBorder(BorderFactory.createLineBorder(Color.gray));
slider = new JSlider(JSlider.HORIZONTAL,0, 100,0);
this.add(slider);
slider.setBounds(300, 130, 235, 50);
slider.setMinorTickSpacing(10);
slider.setMajorTickSpacing(20);
slider.setPaintTicks(true);
//slider.setSnapToTicks(true);
slider.setPaintTrack(true);
slider.setPaintLabels(true);
slider.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider slider = (JSlider) evt.getSource();
if (!slider.getValueIsAdjusting()) {
float value = (float)slider.getValue();
jtf_apriori_2.setText(Float.toString(value/100));
}
}
});
// 标签最小置信度
JLabel jl_apriori_2 = new JLabel("minConfidence:");
this.add(jl_apriori_2);
jl_apriori_2.setBounds(555, 90, 150, 25);
jl_apriori_2.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_3 = new JTextField(2);
this.add(jtf_apriori_3);
jtf_apriori_3.setBounds(720, 90, 50, 25);
jtf_apriori_3.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 18));
jtf_apriori_3.setBorder(BorderFactory.createLineBorder(Color.gray));
slider1 = new JSlider(JSlider.HORIZONTAL,0, 100,0);
this.add(slider1);
slider1.setBounds(545, 130, 235, 50);
slider1.setMinorTickSpacing(10);
slider1.setMajorTickSpacing(20);
slider1.setPaintTicks(true);
//slider.setSnapToTicks(true);
slider1.setPaintTrack(true);
slider1.setPaintLabels(true);
slider1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent evt) {
JSlider slider = (JSlider) evt.getSource();
if (!slider.getValueIsAdjusting()) {
float value = (float)slider.getValue();
jtf_apriori_3.setText(Float.toString(value/100));
}
}
});
// 按钮运行
JButton jb_apriori_3 = new JButton("Run");
jb_apriori_3.setToolTipText("执行Apriori算法得出结果");
this.add(jb_apriori_3);
jb_apriori_3.setBounds(10, 60, 120, 25);
jb_apriori_3.addActionListener(this);
jb_apriori_3.setActionCommand("run_opriori");
jb_apriori_3.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 按钮清空
JButton jb_apriori_4 = new JButton("Cleanup");
jb_apriori_4.setToolTipText("清空图中所有文本框中的数据");
this.add(jb_apriori_4);
jb_apriori_4.setBounds(160, 60, 120, 25);
jb_apriori_4.addActionListener(this);
jb_apriori_4.setActionCommand("清空_apriori");
jb_apriori_4.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 标签文件,单个频繁项集的关联规则
JLabel jl_apriori_8 = new JLabel("Frequent itemsets:");
this.add(jl_apriori_8);
jl_apriori_8.setBounds(10, 150, 180, 20);
jl_apriori_8.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_6 = new JTextField(15);
this.add(jtf_apriori_6);
jtf_apriori_6.setBounds(10, 190, 270, 25);
jtf_apriori_6.setBorder(BorderFactory.createLineBorder(Color.gray));
jtf_apriori_6.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
JButton jb_apriori_9 = new JButton("Mining");
jb_apriori_9.setToolTipText("挖掘指定频繁项集的所有强规则");
this.add(jb_apriori_9);
jb_apriori_9.setBounds(10, 100, 120, 25);
jb_apriori_9.addActionListener(this);
jb_apriori_9.setActionCommand("频繁项集");
jb_apriori_9.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 标签文件路径属性个数
JLabel jl_apriori_7 = new JLabel(" Attribute:");
this.add(jl_apriori_7);
jl_apriori_7.setBounds(310, 60, 120, 20);
jl_apriori_7.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_5 = new JTextField(15);
this.add(jtf_apriori_5);
jtf_apriori_5.setBounds(475, 60, 50, 25);
jtf_apriori_5.setBorder(BorderFactory.createLineBorder(Color.gray));
jtf_apriori_5.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 标签文件路径行数
JLabel jl_apriori_5 = new JLabel("Instance:");
this.add(jl_apriori_5);
jl_apriori_5.setBounds(555, 60, 90, 20);
jl_apriori_5.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
jtf_apriori_4 = new JTextField(15);
this.add(jtf_apriori_4);
jtf_apriori_4.setBounds(720, 60, 50, 25);
jtf_apriori_4.setBorder(BorderFactory.createLineBorder(Color.gray));
jtf_apriori_4.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 15));
// 文本输入显示框
JLabel jl_apriori_3 = new JLabel("Associator input");
this.add(jl_apriori_3);
jl_apriori_3.setBounds(10, 250, 200, 25);
jl_apriori_3.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 18));
jta_apriori_2 = new JTextArea();
JScrollPane jsp_apriori = new JScrollPane(jta_apriori_2);
jsp_apriori.setBounds(10, 290, 270, 210);
this.add(jsp_apriori);
jta_apriori_2.setLineWrap(true);
jta_apriori_2.setFont(new Font("宋体", Font.PLAIN + Font.BOLD, 18));
jta_apriori_2.setBorder(BorderFactory.createLineBorder(Color.gray));
JButton jb_apriori_7 = new JButton("Show");
jb_apriori_7.setToolTipText("显示导入文本框中的内容");
this.add(jb_apriori_7);
jb_apriori_7.setBounds(190, 250, 90, 25);
jb_apriori_7.addActionListener(this);
jb_apriori_7.setActionCommand("显示1");
jb_