最终我得到了一个论坛的解决方案(忘了复制链接)..
这里是......
我的课堂我里面把变量...
private int maxIntDigits = -1;
private int maxFractDigits = -1;
private String old;
我增加了一个BasicEditField,BEF ..
bef = new BasicEditField("","1");
bef.setMaxSize(8);
bef.setChangeListener(this);
add(bef);
然后在它的fieldChanged()中。
public void fieldChanged(Field field, int context)
{
if(field==bef)
{
String str = bef.getText();
if(str.equals(""))
{
old = "";
//return;
}
if(str.indexOf('.') == str.lastIndexOf('.'))
{
if(str.indexOf('-') >= 0)
{
bef.setText(old);
}
if(validateIntPart(str) && validateFractPart(str))
{
old = str;
//return;
}
else
{
bef.setText(old);
}
}
else
{
bef.setText(old);
//return;
}
}
}在它
,然后两个功能......
private boolean validateIntPart(String str) {
if(maxIntDigits == -1) {
return true; //no limit has been set
}
int p = str.indexOf('.');
if(p == -1) {
p = str.length();
}
int digits = str.substring(0, p).length();
if(digits > maxIntDigits) {
return false;
} else {
return true;
}
}
private boolean validateFractPart(String str) {
if(maxFractDigits == -1) {
return true; //no limit has been set
}
int p = str.indexOf('.');
if(p == -1) {
return true; //if no '.' found then the fract part can't be too big
}
int digits = str.substring(p + 1, str.length()).length();
if(digits > maxFractDigits) {
return false;
} else {
return true;
}
}
什么是错误的表现? –
实际上我已经给了我自己的editfield。现在它几乎可以正常工作。但我仍然有一个问题,当我使用相同的BasicEditField时,我遇到了问题。它接受像“1.1.1.1”这样的值。但我想让自己的领域接受正确的浮点值。如“1.1111”或1000.1“,只需一个”。“字符,我该怎么做到这一点? –