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