2016-05-18 53 views
0

我正嘗試在項目上使用JUNG庫。 但我無法確定是否有一個簡單的方法來改變示例項目上放大鏡的尺寸。 目前在所有的例子中,放大鏡都與圖形視圖的大小和窗口大小相關。 有沒有一種方法只設置鏡頭的大小,並打破窗口大小的鏈接? 我正在使用最新的JUNG版本。使用JUNG的放大鏡示例

非常感謝你提前!

問候,

尼爾森

+0

,我只是改變了ViewLensSupport構造以接受一個額外的參數viewRadius的lensTransformer ... – user2964031

+0

實現相同的任何其他方式?我也想通過代碼移動鏡頭...... :( – user2964031

回答

0

本地修訂所做(添加一個構造函數參數ViewLensSupport直接指定鏡頭大小)顯得既必要且充分的解決您的問題。

我同意能夠獨立控制鏡頭尺寸是有意義的;隨時給我們一個拉請求:https://github.com/jrtom/jung/pulls

0

你是否看到,你可以通過按下並拖動其邊緣使用鼠標來調整鏡頭的大小?被稱爲在這種情況下的代碼是這樣的:

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