Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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警报不';t在新窗口中打开,但在新选项卡中打开_Java_User Interface_Javafx_Alert - Fatal编程技术网

JavaFX警报不';t在新窗口中打开,但在新选项卡中打开

JavaFX警报不';t在新窗口中打开,但在新选项卡中打开,java,user-interface,javafx,alert,Java,User Interface,Javafx,Alert,我正在将JavaFX8与场景生成器一起使用,并尝试创建一个警报弹出窗口。请参见下面的我的代码: 更新:包括我所有的代码(不包括一些个人标识符) 我认为您不应该创建新的stage对象。这可能就是问题所在 Stage stage = (Stage)((Node)(event).getSource()).getScene().getWindow(); 上面的代码将为您提供当前阶段。这可能会解决您的问题 祝你好运问题解决: 这是一个操作系统设置问题。在系统首选项的Dock中,我在打开文档时将首选

我正在将JavaFX8与场景生成器一起使用,并尝试创建一个警报弹出窗口。请参见下面的我的代码:

更新:包括我所有的代码(不包括一些个人标识符)




我认为您不应该创建新的stage对象。这可能就是问题所在

Stage stage = (Stage)((Node)(event).getSource()).getScene().getWindow();
上面的代码将为您提供当前阶段。这可能会解决您的问题


祝你好运

问题解决:

这是一个操作系统设置问题。在系统首选项的Dock中,我在打开文档时将首选选项卡设置为始终,手动设置为后,它工作正常


谢谢大家的帮助。

我不知道发生了什么,但你可能不应该在
fileChooser.showOpenDialog(new Stage())
中通过一个新的
阶段。我认为
filechooser
在这种情况下并不重要,它工作正常,我试图完全删除文件选择器部分,警报仍然无法正确显示…尝试设置
alert#initOwner
@mrmcwolf我也试过了。。。不工作尝试创建一个演示问题的示例。如果我理解正确的话,我甚至不知道在你的代码下这是怎么可能的。除非JavaFX知道并使用某些特定于操作系统的特性。谢谢。我在windows机器上运行了我的代码,它运行得很好,在我的Mac电脑上很奇怪……有人知道在不改变首选项的情况下是否可以解决这个问题吗?
public class MainApp extends Application {

    private Stage primaryStage;
    private BorderPane mainView;

    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("Main System");
        showMainView();
    }

    private void showMainView() {
        try {
            // Load Main View from FXML file.
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("view/MainView.fxml"));
            mainView = (BorderPane) loader.load();

            // Show the scene containing the root layout.
            Scene scene = new Scene(mainView);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public Stage getPrimaryStage() {
        return primaryStage;
    }

    public static void main(String[] args) {
        launch(args);
    }
}
public class FileAccess {

    public static boolean importFile(File file) {
        return false;
    }
}
Stage stage = (Stage)((Node)(event).getSource()).getScene().getWindow();