我有一个问题我无法获得返回值,因为我想在控制器中使用它。关闭窗口后,如何从复选框中获取返回值。因为我需要控制器中的返回值。感谢
import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Modality; import javafx.stage.Stage; public class CheckBox { public static String display(String title, String message){ Stage window = new Stage(); String id = " "; window.initModality(Modality.APPLICATION_MODAL); window.setTitle(title); window.setMinWidth(250); Label label = new Label(); label.setText(message); Button yButton = new Button("Y"); Button nbButton = new Button("N"); yButton.setId("Y"); nbButton.setId("N"); yButton.setOnAction(e -> window.close()); nbButton.setOnAction(e -> window.close()); VBox layout = new VBox(10); layout.getChildren().addAll(label,yButton, nbButton); layout.setAlignment(Pos.CENTER); Scene scene = new Scene(layout); window.setScene(scene); window.showAndWait(); if(yButton.isPressed()) return yButton.getId(); else if(nbButton.isPressed()) return nbButton.getId(); return null; } }
答案 0 :(得分:2)
首先,我建议您不要使用与标准库相匹配的名称。名称CheckBox
不合适,因为它具有该名称的控制权。使用描述性的内容,例如CheckBoxDialog
。
避免使用静态上下文。在这种情况下,这是不必要的,并显示不好的风格。
这是一个示例实现,它保留了您使用的静态方法。
public class CheckBoxDialog {
public static final String YES = "Y";
public static final String NO = "N";
private String exitCode = NO;
private Stage window;
private Label label;
public CheckBoxDialog() {
createGUI();
}
private void createGUI() {
window = new Stage();
window.initModality(Modality.APPLICATION_MODAL);
window.setMinWidth(250);
label = new Label();
Button yButton = new Button(YES);
Button nbButton = new Button(NO);
yButton.setOnAction(e -> {
exitCode = YES;
window.close();
});
nbButton.setOnAction(e -> {
exitCode = NO;
window.close();
});
VBox layout = new VBox(10);
layout.getChildren().addAll(label,yButton, nbButton);
layout.setAlignment(Pos.CENTER);
Scene scene = new Scene(layout);
window.setScene(scene);
}
public void setTitle(String title) {
window.setTitle(title);
}
public void setMessage(String message) {
label.setText(message);
}
public String showAndWait() {
window.showAndWait();
return exitCode;
}
public static String display(String title, String message){
CheckBoxDialog dlg = new CheckBoxDialog();
dlg.setTitle(title);
dlg.setMessage(message);
return dlg.showAndWait();
}
}