题
在我的应用程序中,我想使用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添加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 object
) BorderLayout.CENTER
区域,尝试一下 twice setSize
产生了一些混乱
然后您只能致电
panel.add(graphPanel, BorderLayout.CENTER);
panel.revalidate();
panel.repaint();
3)另外两个选择(没有清理 setSize
)
称呼
pack();
到 顶级容器, ,用LCD/LED监视器界仔细注意把它放在 Jscrollpane
不隶属于 StackOverflow