Как отключить горячие клавиши в java FX

У меня в java FX приложении при нажатии на ENTER должно выполняться определённое действие, но есть проблема: если я кликаю на какой-то Button (мышкой), а потом нажимаю ENTER, то этот Button нажимается ещё раз вместо выполнения заданого мной действия. Я так понимаю это встроенные в java алгоритмы, ведь я в код ничего подобного не прописывал. Как это исправить?


Ответы (1 шт):

Автор решения: Andrey M

Не очень понял желаемое поведение, но перехват событий обычно делается через node.addEventFilter или EventDispetcher; например:

private class CustomEventDispatcher implements EventDispatcher {

    private final EventDispatcher originDispatcher;
    
    public CustomEventDispatcher( EventDispatcher originDispatcher ) {
        this.originDispatcher = originDispatcher;
    }
    
    @Override
    public Event dispatchEvent( Event event, EventDispatchChain tail ) {
        if ( event instanceof KeyEvent ) {
            // do something
            event.consume();
            return originDispatcher.dispatchEvent( event, tail );
        }
        return originDispatcher.dispatchEvent( event, tail );
    }

}

// ---

EventDispatcher originalDispatcher = scene.getEventDispatcher();
scene.setEventDispatcher( new CustomEventDispatcher( originalDispatcher ) );
→ Ссылка