2013-02-27 146 views
2

我正在测试,以查看输入密钥是否是使用GWT中的Character.isDefined方法的Unicode字符(而不是大写锁定,插入等)。以下是关键事件的代码示例。该方法isDefined(char)是未定义的类型字符

public void onKeyDown(KeyDownEvent event) { 
    if (isBlank() && (Character.isDefined((char)event.getNativeKeyCode()) && 
    !event.isAnyModifierKeyDown())) { 
     textBox.removeStyleName("stylename"); 
     textBox.setValue(""); 
     setBlank(false); 
    } 
} 

在“if”语句中,我得到一个运行时错误“The method isDefined(char)is undefined for the type Character。”没有编译器错误,并且使用其他静态字符方法(如isLetter或isDigit)可以正常工作。我也尝试不将NativeKeyCode强制转换为char(而是使用int作为codePoint),但它仍然会出现错误。我在网上没有发现任何东西,甚至可以远程解释这一点。任何帮助,将不胜感激。

+1

你能后的堆栈跟踪? – 2013-02-27 19:31:42

+0

它会抛出NoSuchMethodException吗? – 2013-02-27 19:33:25

+0

没有真正的堆栈跟踪。它也会给出错误\t \t'[错误] [平板] - 提示:以前的编译器错误可能导致此类型不可用[错误] [平板] - 提示:检查模块的继承链;它可能不会继承所需的模块,或者模块可能没有正确添加其源路径条目。这在IE9中启动时会发生,如果有帮助的话。 – aharlow 2013-02-27 19:51:37

回答

3

GWT只实现了一部分java标准库。 isDefinedCharacter类是未实现的方法之一,因此您不能在您的代码中使用它。你可以看到如何Character方法实现here

它还介绍了为什么isDefined没有定义(原谅双关语))

+0

嗯,我仍然可以至少使用isLetterOrDigit,它涵盖了键盘上的大部分键,包括非移位标点符号(例如<, >,?仍然不包括在内) 。对于其余的我想我可以使用例外的情况下,如果有必要,其中涉及使用KeyCodes的静态值检查event.getNativeKeyCode()。我只是想确保我没有正确使用这种方法。谢谢! – aharlow 2013-02-27 22:32:39

相关问题