我正试图在一个项目中使用JUNG库。但我很难确定是否已经有一种简单的方法来改变示例项目中放大镜的大小。目前,在所有示例中,放大镜都与图形视图的大小和窗口大小有关。有没有一种方法可以只设置镜头的大小,并断开与窗口大小的链接?我使用的是最新的JUNG版本。
提前感谢您!
问候,
Nelson
您所做的本地修复(向ViewLensSupport
添加构造函数参数以直接指定镜头大小)似乎对解决您的问题既必要又充分。
我同意能够独立控制镜头尺寸是有意义的;请随时向我们发送拉取请求:https://github.com/jrtom/jung/pulls
您看到了吗?您可以使用鼠标通过按住并拖动镜头的边缘来调整镜头的大小?在这种情况下调用的代码是:
lensTransformer.setViewRadius(r);
在edu.uci.ics.jung.samples.LensDemo中,我可以通过修改以下代码将镜头的初始尺寸设置为20:
(请注意,稍后您仍然可以使用镜头边缘的鼠标来调整其大小)
final JRadioButton hyperView = new JRadioButton("Hyperbolic View");
hyperView.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
hyperbolicViewSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
// added to set the lens size to 20
if (e.getStateChange() == ItemEvent.SELECTED) {
MutableTransformer mt = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW);
((LensTransformer) mt).setViewRadius(20);
}
}
});
final JRadioButton hyperModel = new JRadioButton("Hyperbolic Layout");
hyperModel.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
hyperbolicLayoutSupport.activate(e.getStateChange() == ItemEvent.SELECTED);
// added to set the lens size to 20
if (e.getStateChange() == ItemEvent.SELECTED) {
MutableTransformer mt = vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT);
((LensTransformer) mt).setViewRadius(20);
}
}
});