У меня есть приложение 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?