我正在使用Linux,并试图从Oracle的JDK切换到OpenJDK和OpenJFX,但是JavaFX应用程序存在严重问题。
以这个简单的程序为例:
import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.stage.Stage;
public class AlertTest2 extends Application {
@Override
public void start(final Stage primaryStage) throws Exception {
final Alert alert = new Alert(AlertType.INFORMATION, "test alert");
alert.setContentText("content goes here");
alert.showAndWait();
}
public static void main(final String... args) {
launch(args);
}
}
如果我将其与Oracle JDK版本8一起运行,它将运行得很好,并显示一个警报窗口。但是使用OpenJDK和OpenJFX版本11,我只能得到的是:
我还尝试了ZuluFX版本8(包含OpenJFX的OpenJDK构建),它可以正常工作约8次,而其他时候会切碎警告对话框,如上所示。
还有其他人遇到过这个问题吗?可能是什么原因导致的,我该如何解决?
答案 0 :(得分:3)
经过一番挖掘,我发现了这个错误:https://github.com/javafxports/openjdk-jfx/issues/222
(该页面上的)以下变通方法似乎有所帮助:
alert.setResizable(true);
alert.setOnShown(ev -> Platform.runLater(() -> alert.setResizable(false)));
alert.showAndWait();