График не отображается в JavaFX при запуске под Java 11 - PullRequest
2 голосов
/ 09 апреля 2019

У меня проблема в том, что объект mxGraph не загружается правильно при запуске. Мне требуется щелкнуть ячейку внутри нее, чтобы она появилась, и даже тогда она не раскрывает весь график, а только ячейку, по которой щелкнули. Чтобы раскрыть все это, мне нужно обновить график с помощью другого элемента управления или перетащить ячейку вокруг всей области графика.

Когда я изначально разрабатывал это, я работал с Java 8, и это не было проблемой. Это произошло только после обновления до Java 11 (OpenJDK). При обновлении до 11 все остальное не изменилось, изменились только обновленные зависимости.

Я обертываю mxGraphComponent внутри SwingNode, чтобы разместить его внутри узла JavaFX. В прошлом у меня были проблемы с узлами Swing внутри JavaFX, но я создаю все компоненты Swing с помощью метода SwingUtilities.invokeLater (). Я использую версию 3.9.8.1 JGraphX ​​от Maven, но я также безуспешно пробовал обновленную версию 4.0.0 от GitHub.

Вот мой MCVE:

public final class Main {

    public static void main(final String[] args) {
        Application.launch(JGraphExample.class);
    }
}

public final class JGraphExample extends Application {

    private mxGraph graph;

    @Override
    public void start(final Stage primaryStage) {
        final SwingNode value = new SwingNode();

        final BorderPane root = new BorderPane();
        root.setCenter(value);
        root.setBottom(createRefreshButton());

        SwingUtilities.invokeLater(() -> value.setContent(buildGraphComponent()));

        primaryStage.setWidth(500);
        primaryStage.setHeight(500);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    private mxGraphComponent buildGraphComponent() {
        graph = buildGraph();

        return new mxGraphComponent(graph);
    }

    private mxGraph buildGraph() {
        final mxGraph graph = new mxGraph();
        graph.insertVertex(graph.getDefaultParent(), "x", "Hello", 100, 100, 100, 100);

        return graph;
    }

    private Button createRefreshButton() {
        final Button refresh = new Button("Refresh");
        refresh.setOnAction(actionEvent -> graph.refresh());

        return refresh;
    }
}

До нажатия кнопки обновления график не будет отображаться правильно. Это не имело место с Java 8, поскольку это работало как предназначено. Похоже, что обновление до 11 выявило эту проблему.

Кто-нибудь сталкивался с этим раньше или есть идеи? Заранее спасибо.

...