Java:目に見える領域に合うように実行時に別のパネルを追加する
質問
私のアプリケーションでは、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();
解決
graphzoomscrollpaneを使用して、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)も設定していますか、グラフがresizaizableである場合、
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)別の2つの選択(クリーンアップなし setSize
)
電話
pack();
に トップレベルのコンテナ, 、LCD/LEDモニターの境界で注意深く注意してくださいそれを置いてください jscrollpane