Java: добавление панели внутри другой в течение времени, чтобы соответствовать видимой зоне

StackOverflow https://stackoverflow.com/questions/7812221

  •  26-10-2019
  •  | 
  •  

Вопрос

В своем приложении я хочу показать сгенерированный график, используя Jung. Он производит объект JPanel в качестве вывода. Так что я, хотя это было бы просто вопросом добавления компонента к панели. Но график нарисован за пределами его родительской панели. Скриншот:screenshotКак ограничить график быть только внутри видимой области? Код, который я использую для добавления графика на панель, это (граница была для меня, чтобы увидеть границы панели, хотя по какой -то причине он не показывает):

    Layout<Object, String> layout = new CircleLayout<Object, String> (graphProvider.getGraph());
    layout.setSize(panel.getMarketGraphPane().getPreferredSize());
    BasicVisualizationServer<Object,String> graphPanel = new BasicVisualizationServer<Object,String>(layout);
    graphPanel.setBorder(new EtchedBorder());
    graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());
    panel.getMarketGraphPane().add(graphPanel, BorderLayout.CENTER);
    panel.getMarketGraphPane().revalidate();
Это было полезно?

Решение

Используйте graphzoomscrollpane, чтобы добавить Zoomble-Able Graph Scrollpane Container для объекта VisualizationViewer следующим образом:

GraphZoomScrollPane pane = new GraphZoomScrollPane(visualizationViewer);
JPanel panel = new JPanel();
BorderLayout panelMapLayout = new BorderLayout();
panel.setLayout(panelMapLayout);
panel.add(pane, BorderLayout.CENTER);

Другие советы

Слишком мало информации для фактического изображения

1 зависит

  • какие Size Возврат (сгенерированный график с помощью Jung), вы устанавливаете там SetSize (int, int),

  • Если график резоцизируется,

2) Снимите

  • layout.setSize(panel.getMarketGraphPane().getPreferredSize());

а также

  • graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());

ты не можешь setSize для объекта, размещенного в BorderLayout.CENTER, и я думаю, что это возможно напрямую положить (generated graph, using JUNG. It produces JPanel object) в BorderLayout.CENTER область, попробуйте, возможно, ваш twice setSize сгенерировал немного беспорядка

И тогда вы можете позвонить только

panel.add(graphPanel, BorderLayout.CENTER);
panel.revalidate();
panel.repaint();

3) Еще два выбора (без очистки setSize)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top