我的带有 javafx 3D 对象的应用程序工作正常,直到我将 java 从 8u51 升级到 8u60。 升级后,UI显示颠倒。 这是我通过以下测试代码得到的结果。看起来 y 轴在渲染中是相反的,但在功能上却没有。
我尝试将 -Dprism.order=sw 作为 VM 选项。这解决了测试问题, 但随后不允许渲染 javafx 3D 对象。
有谁知道如何解决这个 java/javafx 问题。我将尝试下载并安装 Java 8u51。
注意,我已阅读JavaFX Mac OS strange rendering .
import javafx.application.Application;
import javafx.scene.PerspectiveCamera;
import javafx.scene.SceneAntialiasing;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.Scene;
public class TestAppj extends Application {
public static void main(String[] args) { Application.launch(args); }
public void start(Stage primaryStage) {
primaryStage.setTitle("Test Stage");
TabPane tabbedPane = new TabPane(new Tab("Tools", new BorderPane()), new Tab("Things", new BorderPane()));
MenuBar menuBar = new MenuBar(
new Menu("File", null, new MenuItem("Open"), new MenuItem("New"), new MenuItem("Save")),
new Menu("Edit", null, new MenuItem("Cut"), new MenuItem("Copy"), new MenuItem("Paste")));
BorderPane root = new BorderPane();
root.setTop(new VBox(menuBar, new ToolBar()));
root.setCenter(tabbedPane);
Scene theScene = new Scene(root, 500, 500, true, SceneAntialiasing.BALANCED);
theScene.setCamera(new PerspectiveCamera());
primaryStage.setScene(theScene);
primaryStage.show();
}
}
最佳答案
这是重现您在 Mac 上使用 8u60 发现的错误的更短方法:
@Override
public void start(Stage primaryStage) {
Scene scene = new Scene(new StackPane(new Label("Antialising\nBalanced")),
300, 300, true, SceneAntialiasing.BALANCED);
primaryStage.setScene(scene);
primaryStage.show();
}
问题不在于相机,而在于抗锯齿。
目前在 Mac 上的解决方法:使用 SceneAntialiasing.DISABLED
。这将像往常一样工作,您将能够添加 3D 对象。
关于Java 升级后 OSX 上的 JavaFX 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525086/