我在JavaFX的一个阶段创建了一个Button(名为test)。然后,当你按下这个按钮时,我会显示一个对话框,其中有另一个按钮(此刻它不是那么重要)。现在我希望对话框可以让我冻结整个应用程序。我的意思是,我应该没有回到前一阶段的可能性,我可以这样做,只需用" X&关闭窗口#34;
private TextInputDialog dialog;
private Text actionStatus;
private final String defaultVal = "Default text";
private static final String titleTxt = "Esempio JavaFx Dialog";
test.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
Stage dialogstage = new Stage();
dialogstage.setTitle(titleTxt);
// Window label
Label label = new Label("Text Input Dialog");
label.setTextFill(Color.DARKBLUE);
label.setFont(Font.font("Calibri", FontWeight.BOLD, 36));
HBox labelHb = new HBox();
labelHb.setAlignment(Pos.CENTER);
labelHb.getChildren().add(label);
// Button
Button textbtn = new Button("Premi");
// textbtn.setOnAction(new TextButtonListener());
HBox buttonHb = new HBox(10);
buttonHb.setAlignment(Pos.CENTER);
buttonHb.getChildren().addAll(textbtn);
// Status message text
actionStatus = new Text();
actionStatus.setFont(Font.font("Calibri", FontWeight.NORMAL, 20));
actionStatus.setFill(Color.FIREBRICK);
// Vbox
VBox vbox = new VBox(30);
vbox.setPadding(new Insets(25, 25, 25, 25));;
vbox.getChildren().addAll(labelHb, buttonHb, actionStatus);
// Scene
Scene scene = new Scene(vbox, 500, 250); // w x h
dialogstage.setScene(scene);
dialogstage.show();
// Initial dialog
// displayTextDialog();
textbtn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent e) {
}
});
}
});
答案 0 :(得分:2)
首先,从舞台上删除关闭按钮:
dialogstage.initStyle(StageStyle.UNDECORATED);
然后你制作你的舞台模态(一个对话框,阻止输入到应用程序中的其他一些顶级窗口,除了用对话框作为主人创建的窗口。模态对话框捕获窗口焦点,直到它是关闭,通常是按下按钮。)
dialogstage.initModality(Modality.WINDOW_MODAL);
并定义所有者(父级)以使模态起作用
dialogstage.initOwner( parentStage );
答案 1 :(得分:1)
很容易做到这一点,
您必须在代码中添加以下短语:
Stage.initOwner(yourNewWindow)