无法通过 Action 事件函数关闭 javafx 中的阶段
Unable to close a stage in javafx through an Action event function
我是 JavaFx 的初学者,我遇到了关闭阶段的问题。基本上我正在尝试创建一个 class 这是一个确认框控制器。有一个 'yes' 按钮和一个 'no' 按钮,但无论哪种方式,该阶段都应该关闭并继续应用程序:
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
// more imports...
public class ConfirmBoxController implements IView {
public javafx.scene.control.Button BTN_save;
public javafx.scene.control.Label label_Message;
private Stage stage;
private boolean answer;
private String title;
private String message;
public ConfirmBoxController(){
this("Confirmation","Are you sure?");
}
public ConfirmBoxController(String title, String message){
this.title = title;
this.message = message;
stage = new Stage();
}
public boolean confirm(){
try{
stage = new Stage();
FXMLLoader fxmlLoader = new FXMLLoader();
Parent root = fxmlLoader.load(getClass().getResource("ConfirmBox.fxml").openStream());
Scene scene = new Scene(root, 250, 140);
stage.setTitle(title);
stage.setScene(scene);
stage.showAndWait();
return answer;
}
catch(Exception E){
E.printStackTrace();
return true;
}
}
public void yes(ActionEvent actionEvent) {
answer = true;
stage.close();
}
public void no(ActionEvent actionEvent) {
answer = false;
stage.close();
}
注意:IView是一个空界面。
基本上舞台出现了,我可以点击按钮,我知道这是在注册,因为当我点击按钮时函数 "yes" 和 "no" 打印。但是没有任何反应。
我确信我在监督一些基本的事情,但我还没有找到如何正确地做到这一点。谢谢。
在控制器中为您的按钮命名 class:
@FXML
public 按钮关闭按钮;
并像这样添加:
@FXML
public void handleCloseButtonAction(ActionEvent event) {
Stage stage = (Stage) closeButton.getScene().getWindow();
stage.close();
}
在您的 FXML 中,您需要引用按钮名称和调用 onAction 的方法:
<Button fx:id="closeButton" cancelButton="true" layoutX="350.0" layoutY="767.0" mnemonicParsing="false" onAction="#handleCloseButtonAction" prefWidth="100.0" text="Close" />
我是 JavaFx 的初学者,我遇到了关闭阶段的问题。基本上我正在尝试创建一个 class 这是一个确认框控制器。有一个 'yes' 按钮和一个 'no' 按钮,但无论哪种方式,该阶段都应该关闭并继续应用程序:
import javafx.event.ActionEvent;
import javafx.fxml.FXMLLoader;
// more imports...
public class ConfirmBoxController implements IView {
public javafx.scene.control.Button BTN_save;
public javafx.scene.control.Label label_Message;
private Stage stage;
private boolean answer;
private String title;
private String message;
public ConfirmBoxController(){
this("Confirmation","Are you sure?");
}
public ConfirmBoxController(String title, String message){
this.title = title;
this.message = message;
stage = new Stage();
}
public boolean confirm(){
try{
stage = new Stage();
FXMLLoader fxmlLoader = new FXMLLoader();
Parent root = fxmlLoader.load(getClass().getResource("ConfirmBox.fxml").openStream());
Scene scene = new Scene(root, 250, 140);
stage.setTitle(title);
stage.setScene(scene);
stage.showAndWait();
return answer;
}
catch(Exception E){
E.printStackTrace();
return true;
}
}
public void yes(ActionEvent actionEvent) {
answer = true;
stage.close();
}
public void no(ActionEvent actionEvent) {
answer = false;
stage.close();
}
注意:IView是一个空界面。 基本上舞台出现了,我可以点击按钮,我知道这是在注册,因为当我点击按钮时函数 "yes" 和 "no" 打印。但是没有任何反应。
我确信我在监督一些基本的事情,但我还没有找到如何正确地做到这一点。谢谢。
在控制器中为您的按钮命名 class: @FXML public 按钮关闭按钮;
并像这样添加:
@FXML
public void handleCloseButtonAction(ActionEvent event) {
Stage stage = (Stage) closeButton.getScene().getWindow();
stage.close();
}
在您的 FXML 中,您需要引用按钮名称和调用 onAction 的方法:
<Button fx:id="closeButton" cancelButton="true" layoutX="350.0" layoutY="767.0" mnemonicParsing="false" onAction="#handleCloseButtonAction" prefWidth="100.0" text="Close" />