最終我得到了一個論壇的解決方案(忘了複製鏈接)..
這裏是......
我的課堂我裏面把變量...
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「,只需一個」。「字符,我該怎麼做到這一點? –