- PR -

JTextFieldのデフォルトのショートカットキーの削除方法

1
投稿者投稿内容
masayo_o
会議室デビュー日: 2002/10/10
投稿数: 19
投稿日時: 2002-12-26 17:57
こんにちは。
私は、今タグのテキストエディタを作っています。
そこで、ショートカットキーでデフォルトのものを
削除したいのですが、どうしても削除できません。
例えばデフォルトのショートカットキーでは
Ctrl + xでカットをしてしまいます。
なんとかショートカットキーを消したいのです。
Keymapを取得し、削除したらキーの入力すら出来なくなってしまいました。
どなたか分かる方がいらっしゃいましたら教えていただけないでしょうか?
よろしくお願いします。
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2002-12-30 01:52
デフォルトのキーマップを変えることで実現できます。
これには UIDefaults の focusInputMap を設定する方法と、
JTextComponent#loadKeyMap メソッドを使用する方法があります。

loadKeyMap を使った場合は、添付したサンプルのようになります。
このサンプルは Ctrl C と Ctrl V はビープがなり、Ctrl X は何
もしないようになっています。

-----------------------Test.java---------------------------
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.JTextComponent;
import javax.swing.text.Keymap;

public class Test {
public Test() {
JTextComponent.KeyBinding[] bindings = {
new JTextComponent.KeyBinding(
KeyStroke.getKeyStroke("ctrl C"),
DefaultEditorKit.beepAction),
new JTextComponent.KeyBinding(
KeyStroke.getKeyStroke("ctrl V"),
DefaultEditorKit.beepAction),
new JTextComponent.KeyBinding(
KeyStroke.getKeyStroke("ctrl X"),
DefaultEditorKit.defaultKeyTypedAction)
};

JTextComponent textComp = new JTextArea();
Keymap keymap = textComp.getKeymap();
JTextComponent.loadKeymap(keymap, bindings, textComp.getActions());

JFrame frame = new JFrame("Test");
JTextArea area = new JTextArea();

frame.setBounds(100, 100, 200, 200);
frame.getContentPane().add(area);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

public static void main(String[] args) {
new Test();
}
}

masayo_o
会議室デビュー日: 2002/10/10
投稿数: 19
投稿日時: 2003-01-08 10:20
ご返答ありがとうございます。
レスが遅くなってしまって申し訳ありません。

早速今日やってみようと思います。
本当にありがとうございます。
masayo_o
会議室デビュー日: 2002/10/10
投稿数: 19
投稿日時: 2003-01-09 13:25
ありがとうございました。
ショートカットキーを削除することが出来ました。
本当に感謝です。
1

スキルアップ/キャリアアップ(JOB@IT)