Редактирование таблицы JavaFX запускает события KeyPress

У меня есть приложение JavaFX, которое прослушивает некоторые события KeyPress на "primaryStage", который является узлом Group(), содержащим большинство узлов приложения. как это:

EventHandler kappa = new EventHandler<KeyEvent>(){
    public void handle(KeyEvent e){
        String kc = e.getCode().toString();
            if (kc == "ESCAPE") {
               primaryStage.close(); 
            }
            f.keyHandler(kc, med.getValue(), rateText, statusText); 
    }
};
primaryStage.addEventFilter(KeyEvent.KEY_PRESSED,kappa);` 

У меня также есть узел TableView, который содержит некоторые данные.

Я хотел бы, чтобы мой TableView был редактируемым, что довольно легко реализовать, но когда я пытаюсь редактировать ячейку таблицы, клавиши, которые я нажимаю для ввода текста, вызывают вышеуказанные события KeyPress.

Простым решением было бы не назначать события нажатия клавиш на primaryStage, но мне нужно, чтобы это было так.

Я попытался использовать setOnEditStart в редактируемых ячейках таблицы, где я хотел бы удалить обработчик нажатия клавиш, а затем повторно привязать его к seOnEditCommit. Хотя я не уверен, что это хорошая стратегия. Есть идеи, как это сделать?

EDIT: Может быть, какой-то способ привязать события нажатия клавиш ко всем узлам в primaryStage, кроме узла TableView?


person Paris Mavromoustakos    schedule 12.06.2015    source источник


Ответы (1)


Если я правильно вас понимаю, все, что вам нужно сделать, это использовать событие, когда оно запускается в TableView.

TableView myTableVeiw;
myTableView.setOnKeyPressed(e->{e.consume;});

Надеюсь, это поможет :)

person Daniel Hesslow    schedule 12.06.2015
comment
Но разве это не помешает редактированию записи в таблице? - person Paris Mavromoustakos; 13.06.2015
comment
Я попробовал ваше решение, и событие KeyPress все еще распространяется на приложение. - person Paris Mavromoustakos; 15.06.2015