📄 clustering_analyze_frame.java~50~
字号:
package fuzzy_project;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.math.*;
public class Clustering_Analyze_Frame extends JFrame {
private int row;
private int col;
private double O_Matrix[][]; //接受原始矩阵
private double Sim_Matrix[][]; //相似矩阵
private double Fin_Matrix[][]; //结果矩阵
private byte Cut_Matrix[][]; //参数截矩阵
private String Clustering_result; //分类结果
private double param; //分类参数
BigDecimal temp;
Param_Matrix pm;
Closure_Clustering cc;
Direct_Clustering dc;
Bigtree_Clustering bc;
JPanel jPanel = new JPanel();
JLabel jLabel_note1 = new JLabel();
JButton jButton_avg_min = new JButton();
JButton jButton2 = new JButton();
JButton jButton_max_min = new JButton();
JButton jButton_ang_cos = new JButton();
JButton jButton_abs_sub = new JButton();
JButton jButton_qua_acc = new JButton();
JScrollPane jScrollPane = new JScrollPane();
JTable jTable_Sim_Matrix;
JLabel jLabel_note2 = new JLabel();
JButton jButton_direct_clustering = new JButton();
JButton jButton_max_tree = new JButton();
JButton jButton_pass_closure = new JButton();
JLabel jLabel_empty1 = new JLabel();
JTextField jTextField_param=new JTextField();
JLabel jLabel_note3 = new JLabel();
JLabel jLabel1 = new JLabel();
JScrollPane jScrollPane_clustering = new JScrollPane();
JTextArea jTextArea_Clustering = new JTextArea();
public Clustering_Analyze_Frame(int r,int c,double temp_Matrix[][]) {
try {
row=r;
col=c;
O_Matrix=temp_Matrix;
Clustering_result="";
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setResizable(false);
this.setSize(600, 600);
this.setTitle("聚类分析");
this.setLocation(212,140);
jLabel_note1.setFont(new java.awt.Font("Serif", 1, 15));
jLabel_note1.setPreferredSize(new Dimension(580, 20));
jLabel_note1.setText("选择生成相似矩阵的算法");
jButton_avg_min.setText("算术平均最小法");
jButton_avg_min.addActionListener(new Clustering_Analyze_Frame_jButton_avg_min_actionAdapter(this));
jButton2.setText("jButton2");
jButton_max_min.setText("最大/小值法");
jButton_max_min.addActionListener(new Clustering_Analyze_Frame_jButton_max_min_actionAdapter(this));
jButton_ang_cos.setText("j夹角余弦法");
jButton_ang_cos.addActionListener(new Clustering_Analyze_Frame_jButton_ang_cos_actionAdapter(this));
jButton_abs_sub.setText("绝对值减数法");
jButton_abs_sub.addActionListener(new Clustering_Analyze_Frame_jButton_abs_sub_actionAdapter(this));
jButton_qua_acc.setText("数量积法");
jButton_qua_acc.addActionListener(new Clustering_Analyze_Frame_jButton_qua_acc_actionAdapter(this));
jTable_Sim_Matrix=new JTable(row,row);
jTable_Sim_Matrix.setEnabled(false);
jTable_Sim_Matrix.setSelectionBackground(Color.lightGray);
jScrollPane.setPreferredSize(new Dimension(580, 400));
jLabel_note2.setFont(new java.awt.Font("Serif", 1, 15));
jLabel_note2.setPreferredSize(new Dimension(100, 20));
jLabel_note2.setText("选择聚类算法");
jButton_direct_clustering.setEnabled(false);
jButton_direct_clustering.setText("直接聚类法");
jButton_direct_clustering.addActionListener(new Clustering_Analyze_Frame_jButton_direct_clustering_actionAdapter(this));
jButton_max_tree.setEnabled(false);
jButton_max_tree.setText("j最大树法");
jButton_max_tree.addActionListener(new Clustering_Analyze_Frame_jButton_max_tree_actionAdapter(this));
jButton_pass_closure.setEnabled(false);
jButton_pass_closure.setText("传递闭包法");
jButton_pass_closure.addActionListener(new Clustering_Analyze_Frame_jButton_pass_closure_actionAdapter(this));
jLabel_empty1.setPreferredSize(new Dimension(45, 20));
jLabel_empty1.setText("");
jTextField_param.setPreferredSize(new Dimension(50, 22));
jTextField_param.setEditable(false);
jTextField_param.setText("");
jTextField_param.addKeyListener(new Clustering_Analyze_Frame_jTextField_param_keyAdapter(this));
jLabel_note3.setFont(new java.awt.Font("Serif", 1, 15));
jLabel_note3.setPreferredSize(new Dimension(100, 20));
jLabel_note3.setText("输入分类参数");
jLabel1.setFont(new java.awt.Font("Serif", 1, 15));
jLabel1.setPreferredSize(new Dimension(580, 20));
jLabel1.setText("分类结果");
jScrollPane_clustering.setPreferredSize(new Dimension(580, 40));
jTextArea_Clustering.setBackground(Color.yellow);
jTextArea_Clustering.setFont(new java.awt.Font("Serif", 1, 15));
jTextArea_Clustering.setEditable(false);
jScrollPane.getViewport().add(jTable_Sim_Matrix, null);
this.getContentPane().add(jPanel, BorderLayout.CENTER);
jPanel.add(jLabel_note1, null);
jPanel.add(jButton_qua_acc, null);
jPanel.add(jButton_abs_sub, null);
jPanel.add(jButton_ang_cos, null);
jPanel.add(jButton_max_min, null);
jPanel.add(jButton_avg_min, null);
jPanel.add(jButton2, null);
jPanel.add(jScrollPane, null);
jPanel.add(jLabel_note3, null);
jPanel.add(jTextField_param, null);
jPanel.add(jLabel_note2, null);
jPanel.add(jButton_pass_closure, null);
jPanel.add(jButton_direct_clustering, null);
jPanel.add(jButton_max_tree, null);
jPanel.add(jLabel_empty1, null);
jPanel.add(jLabel1, null);
jPanel.add(jScrollPane_clustering, null);
jScrollPane_clustering.getViewport().add(jTextArea_Clustering, null);
}
void jButton_qua_acc_actionPerformed(ActionEvent e) { //执行数量积算法
qua_acc qa=new qua_acc();
Sim_Matrix=qa.exe(O_Matrix,row,col);
for(int i=0;i<row;i++)
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Sim_Matrix[i][j]);
Sim_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue(); //那模糊值精确到小数点后一位
jTable_Sim_Matrix.setValueAt(Double.toString((Sim_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
jTextField_param.setEditable(true);
}
void jButton_abs_sub_actionPerformed(ActionEvent e) { //
abs_sub as=new abs_sub();
Sim_Matrix=as.exe(O_Matrix,row,col);
for(int i=0;i<row;i++)
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Sim_Matrix[i][j]);
Sim_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue();
jTable_Sim_Matrix.setValueAt(Double.toString((Sim_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
jTextField_param.setEditable(true);
}
void jButton_ang_cos_actionPerformed(ActionEvent e) { //
ang_cos ac=new ang_cos();
Sim_Matrix=ac.exe(O_Matrix,row,col);
for(int i=0;i<row;i++)
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Sim_Matrix[i][j]);
Sim_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue();
jTable_Sim_Matrix.setValueAt(Double.toString((Sim_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
jTextField_param.setEditable(true);
}
void jButton_max_min_actionPerformed(ActionEvent e) { //
max_min mm=new max_min();
Sim_Matrix=mm.exe(O_Matrix,row,col);
for(int i=0;i<row;i++)
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Sim_Matrix[i][j]);
Sim_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue();
jTable_Sim_Matrix.setValueAt(Double.toString((Sim_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
jTextField_param.setEditable(true);
}
void jButton_avg_min_actionPerformed(ActionEvent e) { //
avg_min am=new avg_min();
Sim_Matrix=am.exe(O_Matrix,row,col);
for(int i=0;i<row;i++)
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Sim_Matrix[i][j]);
Sim_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue();
jTable_Sim_Matrix.setValueAt(Double.toString((Sim_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
jTextField_param.setEditable(true);
}
void jButton_pass_closure_actionPerformed(ActionEvent e) { //执行传递闭包法
Pass_closure pc=new Pass_closure();
Fin_Matrix=pc.exe(Sim_Matrix,row,row);
for(int i=0;i<row;i++) //在jTable_Sim_Matrix上显示模糊等价矩阵
for(int j=0;j<row;j++)
{
temp=new BigDecimal(Fin_Matrix[i][j]);
Fin_Matrix[i][j]=temp.setScale(1,temp.ROUND_HALF_UP).doubleValue();
jTable_Sim_Matrix.setValueAt(Double.toString((Fin_Matrix[i][j])),i,j);
jTable_Sim_Matrix.repaint();
}
param=Double.parseDouble(jTextField_param.getText());
pm=new Param_Matrix(Fin_Matrix,row,row,param);
Cut_Matrix=pm.exe();
cc=new Closure_Clustering(Cut_Matrix,row,row);
Clustering_result=cc.exe();
jTextArea_Clustering.setText(Clustering_result);
Clustering_result="";
}
void jButton_direct_clustering_actionPerformed(ActionEvent e) { //执行直接聚类法
param=Double.parseDouble(jTextField_param.getText());
pm=new Param_Matrix(Sim_Matrix,row,row,param);
Cut_Matrix=pm.exe();
dc=new Direct_Clustering(Cut_Matrix,row,row);
Clustering_result=dc.exe();
jTextArea_Clustering.setText(Clustering_result);
Clustering_result="";
}
void jButton_max_tree_actionPerformed(ActionEvent e) { //执行最大树法
param=Double.parseDouble(jTextField_param.getText());
bc=new Bigtree_Clustering(Sim_Matrix,row,row);
Clustering_result=bc.Clustering_exe(param);
jTextArea_Clustering.setText(Clustering_result);
Clustering_result="";
}
void jTextField_param_keyTyped(KeyEvent e) {
jButton_pass_closure.setEnabled(true);
jButton_direct_clustering.setEnabled(true);
jButton_max_tree.setEnabled(true);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
}
class Clustering_Analyze_Frame_jButton_qua_acc_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_qua_acc_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_qua_acc_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_abs_sub_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_abs_sub_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_abs_sub_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_ang_cos_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_ang_cos_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_ang_cos_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_max_min_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_max_min_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_max_min_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_avg_min_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_avg_min_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_avg_min_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_pass_closure_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_pass_closure_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_pass_closure_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jTextField_param_keyAdapter extends java.awt.event.KeyAdapter {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jTextField_param_keyAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void keyTyped(KeyEvent e) {
adaptee.jTextField_param_keyTyped(e);
}
}
class Clustering_Analyze_Frame_jButton_direct_clustering_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_direct_clustering_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_direct_clustering_actionPerformed(e);
}
}
class Clustering_Analyze_Frame_jButton_max_tree_actionAdapter implements java.awt.event.ActionListener {
Clustering_Analyze_Frame adaptee;
Clustering_Analyze_Frame_jButton_max_tree_actionAdapter(Clustering_Analyze_Frame adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton_max_tree_actionPerformed(e);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -