我编写了一个简单BorderedEditField的扩展类EditField。protected boolean keyChar(char key, int status, int time)此类的方法被修改,以便可以操纵EditField的默认行为。如果您发现此示例有帮助,那么您可以改进实现。
import net.rim.device.api.system.Characters;
import net.rim.device.api.ui.component.EditField;
import net.rim.device.api.ui.container.MainScreen;
public final class MyScreen extends MainScreen {
    public MyScreen() {
        BorderedEditField ef = new BorderedEditField();
        ef.setLabel("Label: ");
        add(ef);
    }
}
class BorderedEditField extends EditField {
    private static final int MAX_LENGTH = 13;
    private static final int MAX_LENGTH_EXCEPTION = 16;
    private static final char SPECIAL_CHAR = ',';
    protected boolean keyChar(char key, int status, int time) {
        // Need to add more rules here according to your need.
        if (key == Characters.DELETE || key == Characters.BACKSPACE) {
            return super.keyChar(key, status, time);
        }
        int curTextLength = getText().length();
        if (curTextLength < MAX_LENGTH) {
            return super.keyChar(key, status, time);
        }
        if (curTextLength == MAX_LENGTH) {
            char spChar = getText().charAt(MAX_LENGTH - 1);
            return (spChar == SPECIAL_CHAR) ? super.keyChar(key, status, time) : false;
        }
        if (curTextLength > MAX_LENGTH && curTextLength < MAX_LENGTH_EXCEPTION) {
            return super.keyChar(key, status, time);
        } else {
            return false;
        }
    }
}