JTextFieldを拡張するクラスがあり、CTRL-Shift-Oで何かを実行したいと思います。私はそれを聞いていました
JTextFieldExtension.addKeyListener(new KeyAdapter() {
public void keyReleased(KeyEvent e)
{
}
}
e.isControlDown()とe.isShiftDown()の助けを借りて、それはうまくいきました。しかし、フィールドのテキストも左側から右側にシフトしていることに気づきました。どうやらこれはJTextFieldのデフォルトの動作です。だから私はSOでこのスレッドを見つけました。これは役に立ったようです:
JTextFieldでデフォルトのテキストフィールドショートカットを無効にする方法
そのスレッドから、jtextField.getInputMap()。setParent(null);を呼び出します。その動作を非アクティブ化しました。しかし、それはまた、Ctrl-Cと私がまだ保持したい他の有用なマッピングを取り除きました。そこで、KeyStrokeの「ctrlshiftO」だけを削除するための提案された方法を試しました。しかし、どれも機能していないようです。
現在、クラスのコンストラクターには次のものがあります。
this.getInputMap().put(KeyStroke.getKeyStroke("shift ctrl pressed O"), null);
KeyStroke[] strokes = this.getInputMap().allKeys();
for (KeyStroke ks : strokes)
{
System.out.println(ks.toString());
}
System.out.PrintlnがリストするallKeyの1つとして「shiftctrlpressedO」を表示しているにもかかわらず、機能しません。また、Put()の代わりにInputMap.removeを呼び出してみましたが、成功しませんでした。
私は何が欠けていますか?