【问题标题】:The method isDefined(char) is undefined for the type Character对于 Character 类型,方法 isDefined(char) 未定义
【发布时间】:2013-02-13 18:17:48
【问题描述】:

我正在使用 GWT 中的 Character.isDefined 方法测试输入键是否是 unicode 字符(与大写锁定、插入等相反)。这是关键事件的代码示例。

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

在“if”语句中,我得到一个运行时错误“方法 isDefined(char) 未定义类型 Character。”没有编译器错误,并且使用其他静态 Character 方法(如 isLetter 或 isDigit)可以正常工作。我还尝试不将 NativeKeyCode 转换为 char(而不是使用 int 作为 codePoint),但它仍然给出错误。我在网上找不到任何可以远程解释这一点的东西。任何帮助将不胜感激。

【问题讨论】:

  • 你能发布堆栈跟踪吗?
  • 它会抛出 NoSuchMethodException 吗?
  • 没有真正的堆栈跟踪。它也会给出错误[ERROR] [tablet] - Hint: Previous compiler errors may have made this type unavailable [ERROR] [tablet] - Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly 在 IE9 中启动时会发生这种情况,如果有帮助的话。
  • 试试看它返回什么值,放一个断点

标签: java events gwt unicode character


【解决方案1】:

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

它还描述了为什么没有定义isDefined(请原谅双关语;))

【讨论】:

  • 好吧,我至少仍然可以使用 isLetterOrDigit,它涵盖了键盘上的大部分键,包括非移位标点符号(例如 和 ? 仍然不包括在内)。对于其余的,我想我可以在必要时使用特殊情况,这涉及使用 KeyCodes 中的静态值检查 event.getNativeKeyCode()。我只是想确保我没有不正确地使用该方法。谢谢!
猜你喜欢
  • 2018-02-18
  • 2020-06-26
  • 1970-01-01
  • 2015-08-21
  • 2013-11-11
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多