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を使用して、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)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top