2011-02-15 35 views
1

在Java中,當按下某個鍵(如字母)時,如何防止該鍵輸出分配給jTextPane的字母? (類似於遊戲開發人員在部分應用程序處於焦點時如何抑制鍵盤的正常功能)。在Java中,當按下某個鍵(如字母)時,如何防止該鍵輸出分配給jTextPane的字母?

當KeyEvent.consume()不能單獨完成這項工作時,有沒有其他方法?

與其他人相比,我是一個相當新手的程序員,請耐心等待。任何例子,將不勝感激。我渴望學習。非常感謝你。

+0

請看看這個頁面http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5046125 – Alpine 2011-02-16 15:06:52

回答

0

這段代碼只是一個示例,我希望這會阻止A到Z進入,但不包括所有場景,如Shift,Ctrl和Alt鍵。

JTextPane textPane = new JTextPane(); 
textPane.addKeyListener(new MyKeyListener()); 

public class MyKeyListener extends KeyAdapter 
{ 
    public void keyPressed(KeyEvent key) { 
    int i = key.getKeyCode(); 
    if (i >= 65 && i <= 90) 
    { 
     ((JTextPane)event.getSource()).cancelKey(); 
    } 
    } 
} 
+0

我需要在我的課程中擴展KeyAdapter以使用.consume()嗎?出於某種原因,我的evt.consume();似乎並沒有真正消耗插入的關鍵字母。 – 2011-02-15 18:20:51

+0

消費將不允許插入密鑰A-Z。 – 2011-02-15 18:56:49

5

將自定義DocumentFilter分配給來自JTextPane的文檔。您可以攔截insertString()並跳過不必要的輸入。如果您也應該從粘貼的內容中跳過相同的字符,那麼它比關鍵偵聽器更好。

相關問題