Проблема рендеринга JavaFX в OSX после обновления Java

Мое приложение с 3D-объектами javafx работало нормально, пока я не обновил java с 8u51 до 8u60. После обновления пользовательский интерфейс отображается вверх ногами. Вот что я получаю со следующим тестовым кодом. Кажется, что ось Y перевернута в рендеринге, но не в функциональности.

Я попытался поставить -Dprism.order=sw в качестве опции виртуальной машины. Это устраняет тестовую проблему, но не позволяет визуализировать 3D-объекты javafx.

Кто-нибудь знает, как исправить эту проблему с java/javafx. Я попробую скачать и установить Java 8u51.

Обратите внимание: я прочитал странный рендеринг JavaFX Mac OS .

введите здесь описание изображения

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();
    }
}

person workingdog    schedule 11.09.2015    source источник


Ответы (1)


Это более короткий способ воспроизвести ошибку, обнаруженную вами в 8u60 на Mac:

@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-объекты.

person José Pereda    schedule 11.09.2015
comment
Также сообщите об этой ошибке в Oracle, если вы еще этого не сделали. - person mipa; 12.09.2015
comment
удивлен тем, что ошибка, по-видимому, была исправлена, но не была включена в выпуски 8u_65 или 8u_66. - person workingdog; 24.10.2015