Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javafx中创建弹出窗口_Java_Javafx_Javafx 2_Javafx 8_Scenebuilder - Fatal编程技术网

如何在javafx中创建弹出窗口

如何在javafx中创建弹出窗口,java,javafx,javafx-2,javafx-8,scenebuilder,Java,Javafx,Javafx 2,Javafx 8,Scenebuilder,我想在JavaFX应用程序中创建一个弹出窗口。给我一些想法 当我点击检查按钮时,它会打开弹出窗口。 如何做?< p>您可以创建一个新的阶段,将控件添加到其中,或者如果需要弹出式为对话框>代码>框,则可以考虑使用或(要求JavaFX8) 要创建新阶段,可以使用以下代码段 @Override public void start(final Stage primaryStage) { Button btn = new Button(); btn.setText("Open Dialo

我想在JavaFX应用程序中创建一个弹出窗口。给我一些想法

当我点击检查按钮时,它会打开弹出窗口。
如何做?

< p>您可以创建一个新的<代码>阶段<代码>,将控件添加到其中,或者如果需要弹出式为<代码>对话框>代码>框,则可以考虑使用或(要求JavaFX8)

要创建新阶段,可以使用以下代码段

@Override
public void start(final Stage primaryStage) {
    Button btn = new Button();
    btn.setText("Open Dialog");
    btn.setOnAction(
        new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                final Stage dialog = new Stage();
                dialog.initModality(Modality.APPLICATION_MODAL);
                dialog.initOwner(primaryStage);
                VBox dialogVbox = new VBox(20);
                dialogVbox.getChildren().add(new Text("This is a Dialog"));
                Scene dialogScene = new Scene(dialogVbox, 300, 200);
                dialog.setScene(dialogScene);
                dialog.show();
            }
         });
    }
你调查过了吗



这只是一个例子,但一个流行音乐听起来像它可以实现你想要的。有关更多信息,请查看


重要提示:ControlsFX仅适用于JavaFX 8.0 b118或更高版本。

如果您正在寻找非常简单的对话框弹出窗口,请查看jfxmessagebox()。

根据需要,Popup类可能比Stage类更好。Stage要么是模态的(你不能点击应用程序中的任何其他内容),要么是在你点击应用程序中的其他地方时消失(因为它是一个单独的窗口)。弹出窗口保持在顶部,但不是模态


请参见此示例。

很抱歉,我无法在注释中使用换行符格式化此代码,但请看这里。这将创建一个新窗口:
BorderPane BorderPane=new BorderPane();场景=新场景(边框窗格,600600);阶段=新阶段();舞台场景;舞台剧集标题(“酷窗”);stage.show()我需要导入什么才能使其工作?
dialog.initModality(Modality.NONE);
import org.controlsfx.control.PopOver;
import org.controlsfx.control.PopOver.ArrowLocation;

private PopOver item;

final Scene scene = addItemButton.getScene();

final Point2D windowCoord = new Point2D(scene.getWindow()
        .getX(), scene.getWindow().getY());

final Point2D sceneCoord = new Point2D(scene.getX(), scene.
                getY());

final Point2D nodeCoord = addItemButton.localToScene(0.0,
                        0.0);
final double clickX = Math.round(windowCoord.getX()
    + sceneCoord.getY() + nodeCoord.getX());

final double clickY = Math.round(windowCoord.getY()
        + sceneCoord.getY() + nodeCoord.getY());
item.setContentNode(addItemScreen);
item.setArrowLocation(ArrowLocation.BOTTOM_LEFT);
item.setCornerRadius(4);                            
item.setDetachedTitle("Add New Item");
item.show(addItemButton.getParent(), clickX, clickY);