📄 dbscanclusteringoperatorproperty.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 + -