有没有办法将 EventHandler 添加到关闭 window 按钮(标题栏上的 X)JavaFX
Is there a way to add EventHandler to the close window button (the X on title bar) JavaFX
如标题所示 - 我已经找了一段时间了,但似乎没有找到答案。 setOnHiding 和 setOnHidden 阶段方法都不适用于关闭 X-button.
编辑:我想要实现的是在关闭操作时重置变量的值。这很容易用自定义控制器完成 - 在这种情况下是 MenuItem(setOnHidden 在这里工作,但不是 setOnCloseRequest)。正如答案中所建议的,后一种方法与关闭按钮一起使用。
使用EventHandler捕捉WindowEvent
public class MYUI extends Application implements EventHandler<WindowEvent> {
@Override
public void start(Stage s) throws Exception {
s.setOnCloseRequest(this);
}
@Override
public void stop() throws Exception {
}
@Override
public void handle(WindowEvent event) {
[...] your code
}
}
或按照 MadProgrammer 的建议
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent we) {
[...] // your code
}
});
如标题所示 - 我已经找了一段时间了,但似乎没有找到答案。 setOnHiding 和 setOnHidden 阶段方法都不适用于关闭 X-button.
编辑:我想要实现的是在关闭操作时重置变量的值。这很容易用自定义控制器完成 - 在这种情况下是 MenuItem(setOnHidden 在这里工作,但不是 setOnCloseRequest)。正如答案中所建议的,后一种方法与关闭按钮一起使用。
使用EventHandler捕捉WindowEvent
public class MYUI extends Application implements EventHandler<WindowEvent> {
@Override
public void start(Stage s) throws Exception {
s.setOnCloseRequest(this);
}
@Override
public void stop() throws Exception {
}
@Override
public void handle(WindowEvent event) {
[...] your code
}
}
或按照 MadProgrammer 的建议
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent we) {
[...] // your code
}
});