簡體   English   中英

修改源GraphML文件時如何更新Prefuse或JUNG圖?

[英]How to update Prefuse or JUNG graphs when their source GraphML files are modified?

我正在使用JUNG或Prefuse從GraphML源文件渲染圖形。 現在,另一個程序使用新的節點和邊定期更新此源文件。 我也想更新圖表以反映這些變化。 我在兩個API本身中都找不到讓我做到這一點的東西(沒有適當的refresh(TIMER)或redraw(TIMER)類方法)。 一種方法是在一段時間后終止JFrame,然后重新執行整個數據加載,可視化和呈現過程,但這對我來說似乎不合適。

因此,問題是,盡可能簡單,盡快地做到這一點的最佳方法是什么? 謝謝 :)

定期檢查源文件。 如果您掛在文件的句柄f ,則可以查詢f.lastModified() ,如果自上次檢查以來其他程序已完成其骯臟的工作,請更新! 如果其他程序僅編寫一個更新文件,則可以采用類似的解決方案(如果您有權進行更改,那將很明智-減少讀取的文件,確切知道模型中要更改的內容,等等)。

“定期”是有點粘滯的檢票口-您的情況可能足夠簡單,以至於“每X(毫秒)秒檢查一次”就可以了。 Java中的周期性任務可以通過多種方式實現-參見,例如, 另一個問題

JUNG已在更新演示中重新渲染/重新繪制,例如this 他們的文檔中鏈接的教程 (pdf)在第5節中介紹了動態更新(本節是關於交互性的,但是當顯示新信息時,必須進行更新)。

JUNG提供了包裝器(ObservableGraph),使您可以偵聽更改。

收到更新通知后,您必須更新布局,然后刷新可視化文件。 后者是通過Swing的常規方式完成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM