テキストエリアからのキー押下イベントがJMenBarに到達するのに問題があります。XMLファイルから実行時にメニューバーを生成し、テキスト領域を次のように作成します。
@Override
public void createUI() {
this.textArea = new RSyntaxTextArea(25, 70);
this.scrollPane = new RTextScrollPane(this.textArea);
this.setLayout(new BorderLayout());
this.add(this.scrollPane, BorderLayout.CENTER);
this.textArea.setSyntaxEditingStyle("text/dm");
}
RSyntaxTextArea textArea;
RTextScrollPane scrollPane;
メニューの項目では、setAccelerator()
それらを使用するためのキーの組み合わせを設定するために使用します。テキスト領域で上記の組み合わせを使用すると、メニュー項目に到達しません。以前にこの問題が発生したことを覚えていませんが、なぜ今起こっているのか考えてみてください。
問題は解決しました(私自身の質問に答えるのに6時間待ちたくありませんでした。):
メニューに使用されるキーマッピングのリストを保持し、JComponent
クラスの入力マップを使用してテキスト領域にそれらを無視させることで、問題を解決しました。
コード:
for(KeyStroke ks : this.mappedKeyStrokes) {
component.getInputMap().put(ks, "none");
}