在BlackBerry上设置BasicEditField过滤器

时间:2009-11-03 13:30:43

标签: blackberry java-me

我想创建一个只应接受大写字母,小写字母和数字值的BasicEditField。它不应该接受任何其他符号。 BlackBerry [{3}}是否有任何样式位可以使它以这种方式工作?如果没有,还有什么我可以做的吗?

6 个答案:

答案 0 :(得分:6)

我使用以下方法:TextFilter#getBasicEditField#setFilter

mEdit = new EditField();
mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC));

// Numeric filter that also allows minus sign. 
mEdit.setFilter(TextFilter.get(TextFilter.INTEGER));  

我认为通过覆盖TextFilter创建自己的过滤器可以解决更难的过滤任务。

答案 1 :(得分:3)

也许不可能像那样组合它们,我没有尝试过。每当我在代码中使用过滤器时,我总是以上面提到的第二种方式完成它。它有点复杂,但可以让你更多地控制领域能够和不能接受的内容。查看TextFilter类的API文档。正如我上面所说,你只需要实现转换和验证方法。我认为在你的情况下你不需要做任何转换。但是在验证方法中,您只需检查字符是否在a-z A-Z或0-9范围内。如果返回true,否则返回false。这将阻止所有不需要的字符出现在字段中。

答案 2 :(得分:3)

使用BasicEditField这不容易实现;但是,正确的解决方案将使用AutoTextEditField更改BasicEditField。创建AutoTextEditField时,请使用可以传入参数的构造函数。这应该为你做。

new AutoTextEditField("My label:", "initial value", 1024, 50,
                      TextFilter.LOWERCASE | TextFilter.NUMERIC);

答案 3 :(得分:1)

mEdit.setFilter(TextFilter.get(TextFilter.NUMERIC));工作得很好,我认为,它没有采取减号,因为测试'无法插入“ - ”减去现场的减号。

答案 4 :(得分:0)

有一个构造函数允许您指定字段的样式。然后,您可以将所需的样式OR组合在一起,例如FILTER_UPPERCASE | FILTER_LOWERCASE | FILTER_NUMERIC。

或者,您可以调用setFilter并创建自己的TextFilter子类,它允许您通过覆盖convert和validate方法来指定所需的确切行为。转换允许您强制某些事情,例如自动将所有文本输入大写等。验证允许您阻止输入某些内容,例如特殊字符。查看API以获取更多信息。

答案 5 :(得分:-1)

Kumar我也遇到了同样的问题,使用下面的代码来修复它 -

以下脚本仅允许使用大写,小写,数字值。

setFilter(new TextFilter() {
        public boolean validate(char c) {
            return (Character.isDigit(c) || Character.isLowerCase(c) || Character.isUpperCase(c));
        }
        public char convert(char c, int status) {
            return c;
        }}