2

私のアプリケーションでは、JUNGを使用して生成されたグラフを表示したいと思います。JPanelオブジェクトを出力として生成します。だから、私はそれがパネルにコンポーネントを追加するだけの問題になるでしょうが。ただし、グラフは親パネルの外側に描画されます。スクリーンショット: スクリーンショット グラフを表示領域内のみに制限するにはどうすればよいですか?パネルにグラフを追加するために使用するコードは次のとおりです(境界線は、何らかの理由で表示されませんが、パネルの境界線を表示するためのものでした):

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

2 に答える 2

3

実際の画像の情報が少なすぎます

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 objectBorderLayout.CENTERtwice setSize

そして、あなたは電話することができます

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

3)別の2つの選択(クリーンアップなしsetSize

于 2011-10-18T20:10:33.000 に答える
2

GraphZoomScrollPaneを使用して、次のようにVisualizationViewerオブジェクトのズーム可能なグラフスクロールペインコンテナを追加します。

GraphZoomScrollPane pane = new GraphZoomScrollPane(visualizationViewer);
JPanel panel = new JPanel();
BorderLayout panelMapLayout = new BorderLayout();
panel.setLayout(panelMapLayout);
panel.add(pane, BorderLayout.CENTER);
于 2011-10-18T22:37:19.867 に答える