gpt4 book ai didi

java - 使用 JFoenix 的 JFXDialog

转载 作者:行者123 更新时间:2023-11-30 07:55:47 29 4
gpt4 key购买 nike

我正在使用 Jfoenix,JFXDialog 没有出现。

我做错了什么?这是代码:

JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackpane = new StackPane();
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}

});
content.setActions(button);
dialog.show();

最佳答案

您正在做的是,将 JFXDialog 添加到 StackPane 并显示对话框。通过

JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
....
....
....
dialog.show();

实际上,它所做的是在您创建的对话框的堆栈 Pane 中显示对话框。问题是 stackpane 从未显示,因此对话框也永远不会显示。这就像在计算机关闭时尝试打开文档。

首先,这部分是完全正确的

JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackpane = new StackPane();
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);

在此之后,如果 stackpane 是您的根 Pane ,只需从中创建场景并分别显示 primaryStage 和 dialog(实际上,您不必先显示 primaryStage,然后再显示 dialog,但此顺序更有意义)。

Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();

如果您已经有另一个root Pane,请在显示 primaryStage 和对话框之前向其添加堆栈 Pane 。

AnchorPane root = new AnchorPane();
....
.... //Some other Nodes here
JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackPane = new StackPane();
JFXDialog dialog =new JFXDialog(stackPane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);
Scene scene = new Scene(root, 300, 250);
root.getChildren().add(stackPane);
primaryStage.setScene(scene);
primaryStage.show();
dialog.show();

primaryStage 来自Application 类的重写start 方法。下面是根 Pane 作为 stackpane 的那个。

@Override
public void start(Stage primaryStage) throws Exception {

JFXDialogLayout content= new JFXDialogLayout();
content.setHeading(new Text("Error, No selection"));
content.setBody(new Text("No student selected"));
StackPane stackpane = new StackPane();
JFXDialog dialog =new JFXDialog(stackpane, content, JFXDialog.DialogTransition.CENTER);
JFXButton button=new JFXButton("Okay");
button.setOnAction(new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event){
dialog.close();
}
});
content.setActions(button);

Scene scene = new Scene(stackpane, 300, 250);
primaryStage.setScene(scene);
dialog.show();
primaryStage.show();
}

关于java - 使用 JFoenix 的 JFXDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42905592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com