У меня проблема в том, что объект 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 выявило эту проблему.
Кто-нибудь сталкивался с этим раньше или есть идеи? Заранее спасибо.