JUNG прокручиваемый VisualizationViewer

Я хочу визуализировать некоторые графы во фрейме (на самом деле JInternalFrame, поскольку у меня есть и другие вещи вне графика), используя библиотеку JUNG. В моем классе много кодов, но я просто даю краткую версию, как я создаю компоненты для отображения графика:

  1. Создать макет графика, в зависимости от типа графика, у меня созданы разные макеты
  2. Создайте VisualizationViewer с макетом в качестве параметра.
  3. Создайте GraphZoomScrollPane, содержащий VisualitationViewer.
  4. Установите GraphZoomScrollPane как панель содержимого фрейма.

И конечный эффект состоит в том, что отображаются полосы прокрутки, но даже если график больше, чем рамка, полосы прокрутки не включены. Если я уменьшу размер кадра, полосы прокрутки будут включены, но я не смогу прокрутить, чтобы увидеть весь график. Поэтому независимо от того, насколько большой кадр, я не могу видеть весь график.

Я также попытался установить размер макета, размер VisualizationViewer, но не сработал.

Может кто-нибудь сказать мне, что я пропустил?

2 ответа

Если кому-то все еще нужно решение:

JFrame jFrame=new JFrame("Graph");
Dimension preferredGraphSize=new Dimension(2500,2500);
Layout<V,E> layout=new FRLayout<>(graph, preferredGraphSize);
VisualizationViewer<V,E> visualizationViewer=new VisualizationViewer<>(layout, preferredGraphSize);

ScrollPane scrollPane=new ScrollPane();
scrollPane.add(visualizationViewer);
jFrame.getContentPane().add(scrollPane);
jFrame.pack();
jFrame.setVisible(true);

Мы устанавливаем предпочтительный размер для макета и VisualizationViewer, заворачивать VisualizationViewer внутри ScrollPane и прокрутка работает.

Нашел обходной путь хотя бы для моей конкретной ситуации:

Я реализовал VisualizationViewer.GraphMouse, когда щелчок мышью по пустому пространству перемещает весь график так, чтобы можно было видеть невидимую часть. Поэтому панель прокрутки не нужна.

Но если панель прокрутки действительно нужна, проблема все еще остается открытой.

Другие вопросы по тегам