2013-02-27 148 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

相關問題