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

📄 dbscanclusteringoperatorproperty.java

📁 DBSCAN的Java 数据挖掘 源代码
💻 JAVA
字号:
package xmu.hll.operation.property;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import xmu.hll.operation.operator.DBSCANClusteringOperator;
import eti.bi.alphaminer.core.handler.ICaseHandler;
import eti.bi.alphaminer.operation.operator.INodeInfo;
import eti.bi.alphaminer.operation.property.OperatorProperty;
import eti.bi.common.Locale.Resource;
import eti.bi.exception.SysException;
import eti.bi.util.ValueValidator;

public class DBSCANClusteringOperatorProperty extends OperatorProperty {
	private static final long serialVersionUID = 1L;
	private JButton m_ButtonReset;
	private JButton m_ButtonSave;
	private JButton m_ButtonCancel;
	private JTextField m_eps;
	private JTextField m_minPoints;

	public DBSCANClusteringOperatorProperty(String a_CaseID, String a_NodeID,
			String a_Name, INodeInfo a_NodeInfo, ICaseHandler a_CaseHandler)
			throws SysException {
		super(a_CaseID, a_NodeID, (new StringBuilder(String.valueOf(Resource.srcStr("Clustering")))).append(" [").append(a_NodeID).append("]").toString(), a_NodeInfo, a_CaseHandler);
		m_ButtonReset = new JButton();
		m_ButtonSave = new JButton();
		m_ButtonCancel = new JButton();
		m_eps = new JTextField();
		m_minPoints = new JTextField();
		createClusteringOperatorProperty();
	}

	private void createClusteringOperatorProperty() {
		JPanel propertyPanel = new JPanel(); // 属性容器
		JPanel buttonPanel = new JPanel(); // 按钮容器
		propertyPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createTitledBorder(Resource.srcStr("ClusteringAlgorithm")), BorderFactory.createEmptyBorder(2, 4, 0, 6)));
		JLabel eps = new JLabel(Resource.srcStr("eps"));
		JLabel minPoints = new JLabel(Resource.srcStr("minPoints"));
		int leftMargin = 4;
		eps.setBorder(BorderFactory.createEmptyBorder(0, leftMargin, 0, 0));
		minPoints.setBorder(BorderFactory.createEmptyBorder(0, leftMargin, 0, 0));
		propertyPanel.setLayout(new GridLayout(2, 2, 0, 5));
		JPanel epsPanel = new JPanel(new GridLayout(1, 2, 50, 0));
		epsPanel.add(m_eps);
		epsPanel.add(new JPanel());
		JPanel minPointsPanel = new JPanel(new GridLayout(1, 2, 50, 0));
		minPointsPanel.add(m_minPoints);
		minPointsPanel.add(new JPanel());
		propertyPanel.add(eps);
		propertyPanel.add(epsPanel);
		propertyPanel.add(minPoints);
		propertyPanel.add(minPointsPanel);
		m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
		m_ButtonSave.setText(Resource.srcStr("m_ButtonApply"));
		m_ButtonCancel.setSelected(false);
		m_ButtonCancel.setText(Resource.srcStr("m_ButtonClose"));
		buttonPanel.add(m_ButtonSave);
		buttonPanel.add(m_ButtonReset);
		buttonPanel.add(m_ButtonCancel);
		m_ButtonReset.addActionListener(this);
		m_ButtonSave.addActionListener(this);
		m_ButtonCancel.addActionListener(this);
		getContentPane().add(propertyPanel, "Center");
		getContentPane().add(buttonPanel, "South");
		setSize(250, 160);
	}

	//按钮监听
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == m_ButtonSave) { // 应用
			if (applyContent()) {
				m_ParameterChanged = true;
			}
		} 
		else if (e.getSource() == m_ButtonReset) { // 重置
			getContent();
		} 
		else { // 关闭
			close();
		}
	}

	// 执行保存
	private boolean applyContent() {
		if (validateProperty()) {
			return setContent();
		} 
		else {
			return false;
		}
	}

	// 校验输入的数字是否符合
	private boolean validateProperty() {
		String message = null;
		
		// ------------------------------------------------校验eps
		String num = m_eps.getText().trim();

		if (!ValueValidator.isNumber(num)) {
			message = Resource.srcStr("kNotNumberMessage");
		} 
		else if (!ValueValidator.isInteger(num)) {
			message = Resource.srcStr("kNotIntegerMessage");
		} 
		else if (!ValueValidator.largerThan(num, 0, false)) {
			message = Resource.srcStr("notLargerZeroMessage");
		}

		if (message != null) {
			m_eps.requestFocus();
			m_eps.selectAll();
			m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
			return false;
		}
		// -------------------------------------------------校验minPoints
		num = m_minPoints.getText().trim();

		if (!ValueValidator.isNumber(num)) {
			message = Resource.srcStr("kNotNumberMessage");
		} 
		else if (!ValueValidator.isInteger(num)) {
			message = Resource.srcStr("kNotIntegerMessage");
		} 
		else if (!ValueValidator.largerThan(num, 0, false)) {
			message = Resource.srcStr("notLargerZeroMessage");
		}

		if (message != null) {
			m_minPoints.requestFocus();
			m_minPoints.selectAll();
			m_MessageDialog.showWarning(message, Resource.srcStr("InvalidValueMessage"));
			
			return false;
		} 
		else {
			return true;
		}
	}

	//保存参数信息
	private boolean setContent() {
		if (m_Node == null) {
			return false;
		}

		m_Node.setParameterValue(DBSCANClusteringOperator.M_EPS, m_eps.getText().trim());
		m_Node.setParameterValue(DBSCANClusteringOperator.M_MINPOTIONS,m_minPoints.getText().trim());
		clearOperatorTempResult();
		setPropertiesModified();
		
		return true;
	}

	//重置参数信息
	private void getContent() {
		if (m_Node == null) {
			return;
		}
		
		//--------------------------------------------------------------------重置eps
		String eps = m_Node.getParameterValue(DBSCANClusteringOperator.M_EPS);
		
		if (eps == null) {
			eps = DBSCANClusteringOperator.DEFAULT_M_EPS;
		}
		JOptionPane.showMessageDialog(null, eps);
		m_eps.setText(eps);
		//--------------------------------------------------------------------重置minpotins
		String minPoints = m_Node.getParameterValue(DBSCANClusteringOperator.M_MINPOTIONS);
		JOptionPane.showMessageDialog(null, minPoints);
		if (minPoints == null) {
			minPoints = DBSCANClusteringOperator.DEFAULT_M_MINPOTIONS;
		}
		m_minPoints.setText(minPoints);
	}
}

⌨️ 快捷键说明

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