最初可调整大小的JavaFX阶段在显示模式对话框后无法再调整大小。这只发生在Linux:Ubuntu和XUbuntu。它在Windows中运行良好。
下面的代码显示了一个带按钮的窗口。最初可以毫无问题地调整窗口大小。单击按钮后,将显示“警告”对话框,此后无法再调整窗口大小。这里有什么我想念的吗?这是一个Ubuntu错误吗?
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class StageTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Show Alert");
btn.setOnAction(e -> {
Alert alert = new Alert(AlertType.WARNING, "This is an alert", ButtonType.YES);
alert.showAndWait();
});
StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 1000, 850));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
答案 0 :(得分:0)
这是在虚拟机上的linux上运行时发生的JavaFX错误。使用oracle jdk 1.8.0_152在VMWare上运行时,我在CentOS 7上遇到同样的问题。
此问题的错误提示位于:https://bugs.openjdk.java.net/browse/JDK-8140491
故障单只提到Virtual Box上的Ubuntu,但我在VMWare上遇到了与CentOS相同的问题。
不幸的是,JDK错误系统对公众不公开,因此我无法投票或观看该问题。目前,他们一直在踢罐头,并且不打算在Java 11之前修复它!也许如果有足够的人抱怨他们会尽快解决这个问题。
答案 1 :(得分:0)
我可以确认使用JDK 1.8u192的RHELS 6.9也会发生这种情况。
只有在“警报/对话框”被取消(隐藏)后,主阶段才可以调整大小。
一种解决方法是在显示之前致电alert.initModality(Modality.NONE)
。
我不知道为什么会这样,但是可以为我解决。