在我的应用程序中,我想使用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添加Zoom-Ablable ScrollPane容器以进行可视化视图对象:如下:

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

其他提示

实际图像的信息太少

1取决于

  • 什么 Size 返回(生成图,使用Jung)是否也设置在此处设置(int,int),

  • 如果可重新解释,

2)删除

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

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

你不能 setSize 对于放置在 BorderLayout.CENTER, ,我认为这是直接提出的(generated graph, using JUNG. It produces JPanel objectBorderLayout.CENTER 区域,尝试一下 twice setSize 产生了一些混乱

然后您只能致电

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top