如果你想以Controller架构写javaFX的话, 有一个需求是按ESC键退出程序, 那么你需要在Controller中获取到Stage从而关闭程序
思路:
1. 根据id取到布局中的根元素, (使用fx:id获取 )
2. 通过根元素取得Stage
代码:
fxml:
<VBox fx:id="rootLayout" prefHeight="300.0" prefWidth="450.0" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<TextArea fx:id="detail" onKeyPressed="#translateStart" prefHeight="100.0" prefWidth="450.0" text="" wrapText="true">
<font>
<Font name="consolas" size="13.0" />
</font>
</TextArea>
</children>
<!--这里是你的其他控件-->
</VBox>
controller:
public class Controller implements EventHandler<KeyEvent> {
@FXML
private TextArea detail;
@FXML
private VBox rootLayout;
//这里是监听键盘按下的事件方法
@FXML
public void translateStart(KeyEvent event) {
handle(event);
}
//这里是判断如果按下ESC就直接退出
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.ESCAPE) {
//这里是取到Stage的具体代码
Stage stage = (Stage) rootLayout.getScene().getWindow();
stage.close();
}
}
}
其他不相关的代码我就不写了, 大家随意看看就好