在我的应用程序中,我想使用 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();
最佳答案
实际图像的信息太少
1 取决于
Size
返回什么(使用 JUNG 生成图表),您是否也在那里设置了 setSize(int, int),如果图形可调整大小,
2) 删除
layout.setSize(panel.getMarketGraphPane().getPreferredSize());
和
graphPanel.setSize(panel.getMarketGraphPane().getPreferredSize());
您不能将对象setSize
放置到BorderLayout.CENTER
,我认为可以直接放置(生成的图形,使用JUNG.它会生成 JPanel 对象
)到 BorderLayout.CENTER
区域,尝试一下,也许您的两次 setSize
产生了一些困惑
然后你就只能打电话了
panel.add(graphPanel, BorderLayout.CENTER);
panel.revalidate();
panel.repaint();
3)另外两个选择(无需清理setSize
)
调用
pack();
到 Top-Level Container ,仔细注意LCD/LED显示器的边界将其放入 JScrollPane
关于Java:在运行时在另一个面板中添加面板以适应可见区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812221/