Я создал VBox в javafx, который появляется как всплывающее приложение, основанное на комбинации горячих клавиш alt + j. Теперь все, что я хочу сделать, это закрыть VBox, когда я отключаю комбинацию клавиш alt + j. Это мой фрагмент кодаЗаключительный этап по выпуску ключа
final Stage dialog = new Stage();
EventHandler handler = new EventHandler<KeyEvent>()
{
public void handle(KeyEvent event)
{
if (event.isAltDown() && event.getCode() == KeyCode.J)
{
dialog.initStyle(StageStyle.UNDECORATED);
// dialog.initModality(Modality.APPLICATION_MODAL);
VBox dialogVbox = new VBox(25);
dialogVbox.getChildren().add(new Text("ABC"));
Scene dialogScene = new Scene(dialogVbox, 300, 200);
dialog.setScene(dialogScene);
dialog.show();
}
else if (KeyEvent.KEY_RELEASED.equals(eventRel.isAltDown() && eventRel.getCode() == KeyCode.J))
{
dialog.hide();
}
}
};
scene.addEventHandler(KeyEvent.KEY_PRESSED, handler);
Но это не закрывается, как ожидалось. Пожалуйста, наставит меня с VBox закрытия по ключевым освобождении
В соответствии с замечанием я создал отдельный обработчик для ключа выпуска: Это не закрывал VBOX
EventHandler handlerRel = new EventHandler<KeyEvent>() {
public void handle(KeyEvent eventRel) {
//event.consume();
if(KeyEvent.KEY_RELEASED.equals(eventRel.isAltDown() && eventRel.getCode() == KeyCode.J))
{
System.out.println("Inside released");
dialog.hide();
}
}};
scene.addEventHandler(KeyEvent.KEY_RELEASED, handlerRel);
Благодарности
Вы только добавил обработчик события 'KeyEvent.KEY_PRESSED' вы также должны добавить (или создать отдельную один для' KeyEvent.KEY_RELEASED'. – Nitram
я что просто увидеть отредактированный код Thanks – Gemcode
Это ' if' во втором обработчике. Я думаю, что вы делаете проверку «равно» на результат проверки кнопки. Значение: не должно ли условие 'if' быть таким же, как в первом обработчике? – Nitram