Liwh
13-11-2002, 09:58
Khi mình đọc Tutorial của Sun thì thấy có nói JTextComponent có 1 default keymap. Và có ghi như sau:
You can enhance or modify the default keymap in the following ways:
* Add a custom keymap to the text component with JTextComponent's addKeymap method.
* Add key bindings to the default keymap with Keymap's addActionForKeyStroke method. The default keymap is shared among text components, so use this with caution.
* Remove key bindings from the default keymap with Keymap's removeKeyStrokeBinding method. The default keymap is shared among text components, so again, use this with caution.
Theo như mình hiểu thì khi remove Keymap đi rồi thì khi nhấn Up, Down, Right, Left (hay bất kì phím nào trừ character) sẽ không được. Nhưng hình như mình hiểu sai, tự vì khi remove đi rồi thì vẫn còn có thể di chuyển caret bằng các phím mũi tên, Home, End ...
Còn khi bắt các KeyEvent thì lại gặp vấn đề khác, vì có rất nhiều key để bắt, do đó cách này không có hiệu quả (39 keys). Nên tạo một cái keymap mới là cách tốt, nhưng mình lại không remove được cái JTextComponent.DEFAULT_KEYMAP mới tức. User có thể di chcuyển caret tùm lum.
Như vậy các bạn có cách nào disable các phím (ngoại trừ các character để mình gõ, nên không setEnable(false) được). Hay ở đâu có source, bài viết nào tương tự thì chỉ giùm mình với.
Cám ơn
You can enhance or modify the default keymap in the following ways:
* Add a custom keymap to the text component with JTextComponent's addKeymap method.
* Add key bindings to the default keymap with Keymap's addActionForKeyStroke method. The default keymap is shared among text components, so use this with caution.
* Remove key bindings from the default keymap with Keymap's removeKeyStrokeBinding method. The default keymap is shared among text components, so again, use this with caution.
Theo như mình hiểu thì khi remove Keymap đi rồi thì khi nhấn Up, Down, Right, Left (hay bất kì phím nào trừ character) sẽ không được. Nhưng hình như mình hiểu sai, tự vì khi remove đi rồi thì vẫn còn có thể di chuyển caret bằng các phím mũi tên, Home, End ...
Còn khi bắt các KeyEvent thì lại gặp vấn đề khác, vì có rất nhiều key để bắt, do đó cách này không có hiệu quả (39 keys). Nên tạo một cái keymap mới là cách tốt, nhưng mình lại không remove được cái JTextComponent.DEFAULT_KEYMAP mới tức. User có thể di chcuyển caret tùm lum.
Như vậy các bạn có cách nào disable các phím (ngoại trừ các character để mình gõ, nên không setEnable(false) được). Hay ở đâu có source, bài viết nào tương tự thì chỉ giùm mình với.
Cám ơn