0

私のスタンドアロン JavaFX 2 アプリケーションでは、Escape キーを押すと、アプリケーションをシャットダウンするイベントがトリガーされます。しかし、その後、散発的に機能しなくなりました。さらにテストを行った結果、メイン ディスプレイ上のいくつかの ComboBox コンポーネントのいずれかにフォーカスがある場合、Escape を押しても何も起こらないことがわかりました。ただし、TableView、TextBox、Button などをクリックしてフォーカスを与えると、問題なく動作します。また、フォーカスが ComboBox に戻ると、再び停止します。トリガー イベントを他の KeyCodes に変更すると、どのアイテムがフォーカスされていても問題が解決したようです。

そのため、フォーカスされた ComboBoxes は KeyCode.ESCAPE イベントを消費しているように見えます。しかし、なぜ?また、フォーカスを取得したり、イベント ハンドラーを他のキーに変更したりすることなく、これを修正する方法はありますか?

4

1 に答える 1

1

ListViewポップアップが開いているときにエスケープキーを押すと閉じるため、 ESCAPEキーコードを消費するListViewポップアップが含まれていると思います。OttPrime で言及されている EventFilter を使用すると、期待どおりに動作するはずです...

    scene.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>()
    {
        @Override
        public void handle(KeyEvent ke)
        {
            if (ke.getCode() == KeyCode.ESCAPE)
            {
                shutDownApp(true);
            }
        }
    });
于 2013-08-09T20:38:18.707 に答える