Java 范围的通用输入验证器
我试图创建一个通用的InputVerifier来检查JComponent中的数据是否在指定的范围内。为此,我将泛型类型扩展为可比较的,以确保它可以进行比较 我关注的是以下两件事:Java 范围的通用输入验证器,java,swing,validation,java-7,inputverifier,Java,Swing,Validation,Java 7,Inputverifier,我试图创建一个通用的InputVerifier来检查JComponent中的数据是否在指定的范围内。为此,我将泛型类型扩展为可比较的,以确保它可以进行比较 我关注的是以下两件事: JComponent没有getText()方法,也没有可转换的子类,这些子类由JTextField和JSpinner等常见组件使用,它们都有各自不同的获取值的方法 我认为我不能指定我的泛型类型数据类型必须具有特定的函数签名。我试图看看是否可以强制它有一个接受单个字符串的构造函数(比如Integer、Double、Flo
datatypemydata=newdatatype(text)代码>
import javax.swing.InputVerifier;
import javax.swing.JComponent;
public abstract class InputRangeVerifier<DataType extends Comparable<DataType>> extends InputVerifier {
private DataType m_min;
private DataType m_max;
public InputRangeVerifier(DataType min, DataType max) {
m_min = min;
m_max = max;
}
@Override
public boolean verify(JComponent component) {
String componentText = getComponentText();
DataType comparable = getComparableValue(componentText);
boolean greaterThanOrEqualToMin = comparable.compareTo(m_min) > 0;
boolean lessThanOrEqualToMax = comparable.compareTo(m_max) < 0;
boolean isInRange = greaterThanOrEqualToMin && lessThanOrEqualToMax;
return isInRange;
}
public abstract String getComponentText();
public abstract DataType getComparableValue(String text);
}
import javax.swing.InputVerifier;
导入javax.swing.JComponent;
公共抽象类InputRangeVerifier扩展了InputVerifier{
私有数据类型m_min;
私有数据类型m_max;
公共InputRangeVerifier(数据类型最小,数据类型最大){
m_min=min;
m_max=max;
}
@凌驾
公共布尔验证(JComponent组件){
String componentText=getComponentText();
DataType Compariable=GetCompariableValue(componentText);
布尔值greaterThanOrEqualToMin=可比。与(m_min)>0相比;
布尔值lessThanOrEqualToMax=可比。比较到(m_max)<0;
布尔值isInRange=greaterThanOrEqualToMin&lessThanOrEqualToMax;
返回isInRange;
}
公共抽象字符串getComponentText();
公共抽象数据类型getComparableValue(字符串文本);
}
我认为您必须重载所有基本数据类型,例如整数、双精度、日期、字符串、布尔值,否则我无法比较字符串形式的数字或日期实例,或者我错了吗???请查看BoundedRangeModel@mKorbel,BoundedRangeModel仅处理整数。另请参见。