javafx - 将 Windows 更新到 1903(2019 年 5 月)后 JavaFX 无法创建阶段
问题描述
我用 2019 年 5 月版本 (1903) 更新了我的 Windows 10 笔记本电脑,JavaFX 似乎不再工作了。启动任何 JavaFX 应用程序后,我在任务栏上看到一个图标,但没有创建任何窗口。我的 java 是最新的 Java 8,最新的 Eclipse 作为 IDE。
这是一个已知问题还是我做错了什么?是否有解决方法或修复方法?谢谢
我创建了一个重现问题的小应用程序。如果我注释掉以下行 primaryStage.initStyle(StageStyle.UNDECORATED); 然后它按预期工作。否则 Windows 10 (1903) 挂起,不显示任何窗口。请注意,您需要在 Windows 中使用任务管理器来杀死 JVM。
package com.alam33;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class Win10_1903Test extends Application {
public Win10_1903Test() {
}
@Override
public void start(Stage primaryStage) throws IOException {
VBox vbox = new VBox();
vbox.setPrefHeight(200);
vbox.setPrefWidth(300);
Scene scene = new Scene(vbox);
primaryStage.setTitle("Win10_1903Test");
primaryStage.setScene(scene);
primaryStage.setFullScreen(true);
/* THIS IS THE OFFENDING LINE */
primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
解决方案
这是 Oracle 提供的一种解决方法,尽管他们无法重现它。我怀疑这个问题是特定于我机器中的硬件的。
解决方法:添加 jvm 选项 -Dprism.order=sw
如下所述,这不是一个合适的解决方案,但我将其作为答案,因为它确实有助于确保您的代码正常,这在开发过程中很重要。
推荐阅读
- c# - 强制 datagridview 中日期或时间的特定格式,无论它是什么用户输入格式
- c# - Mongo .Net Driver 如何关闭连接
- jquery - 观看 HTML 并执行 jQuery 脚本
- autolayout - 在 UICollectionViewCell 内布局 UIStackView
- ios - 为具有闭包默认值的属性设置委托
- linker-scripts - ARMCC 链接器:创建一个未初始化的区域
- powershell - Powershell 将列添加到 CSV
- elixir - 集群中的全局动态主管
- python - 使用rest框架将文件从服务器发送到另一台服务器
- javascript - 更新对象列表中的特定属性