Java:在运行时在另一个内部添加面板以适合可见区域

时间:2011-10-18 18:57:22

标签: java swing jung

在我的应用程序中,我想使用JUNG显示生成的图形。它生成JPanel对象作为输出。所以,我认为这只是向面板添加组件的问题。但是图表是在其父面板之外绘制的。截图: screenshot http://i51.tinypic.com/2eg5lk5.jpg 如何将图形限制在可见区域内? 我用来向面板添加图形的代码是这样的(边框是我看到面板边框,虽然它没有显示出来的原因):

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

2 个答案:

答案 0 :(得分: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 object)放到BorderLayout.CENTER区域,试试这个也许你的twice setSize产生了一些混乱

然后你只能打电话

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

3)另外两个选择(没有清理setSize

答案 1 :(得分:2)

使用GraphZoomScrollPane为VisualizationViewer对象添加可缩放图形滚动窗格容器,如下所示:

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