在我的java項目中,我需要創建一個帶有swing的GUI,我將擁有一個像空間一樣的畫布。用戶應該能夠點擊並創建節點,然後用邊連接節點(就像你將在MS Visio中創建一個UML圖)。用戶還應該能夠將節點與邊緣一起移動。然後我的應用程序將保存網絡並運行自私的節點算法,用戶應該能夠在GUI上看到它(創建和消除邊緣)。我不確定我需要使用哪種擺動工具來完成此操作。 (並且可以將其在WPF做,我有什麼工具來使用該)如何在java swing GUI中創建可移動的節點和邊緣?
回答
如果你想「推出自己的」解決方案,我有幾個建議:
- 顯然,你需要使用MouseListener和MouseMotionListener,它們可以通過使用MouseAdapter組合成一個實體。
- 您的線條可能會繪製在JPanel的paintComponent方法中。
- 然後你對節點的選擇就會發生變化。您可以使用組件(如JLabels),每個組件都附帶一個MouseAdapter(同時作爲MouseListener和MouseMotionListener),或者您可以使用單個MouseAdapter添加到JPanel,並再次在JPanel的
paintComponent(...)
方法中將節點呈現爲矩形。 - 節點和連接的數據應與GUI分開保存,可能在其自己的「模型」類中作爲MVC(模型 - 視圖 - 控制器)應用程序的一部分。
- MouseAdapter將成爲MVC結構的「控件」的一部分,並會改變模型。
- 我更喜歡能夠將監聽器添加到我的模型中,例如PropertyChangeListener,並且讓視圖Swing GUI根據其偵聽器被觸發來激發其顯示更改。
因爲這可能是家庭作業,所以我會留給你解決細節和代碼問題,但如果你被困在特定的步驟中,隨時可以隨身攜帶你的代碼。
針對MVC的+1。['GraphPanel'](https://sites.google.com/site/drjohnbmatthews/graphpanel)是一個演示一些基本技巧的例子。 – trashgod 2012-07-27 18:22:10
試試這個
<dependency>
<groupId>jgraph</groupId>
<artifactId>jgraph</artifactId>
<version>5.13.0.0</version>
</dependency>
我們真的創造了十分複雜擺動UI屏幕採用了大量的曲線結構導向與此庫。看看這裏http://www.jgraph.com或直接在這裏http://www.jgraph.com/images/business-large.png這是你在找什麼?
一般問題:我可以使用html5和JS爲我的桌面Java應用程序構建gui。如果是的話,我需要什麼工具? – Ramy 2012-08-02 01:43:44
我建議你試試JUNG庫。 我用這個庫創建了一個應用程序(而不是JGraph
),因爲我認爲JUNG比JGraph
更容易學習新手(即使它提供的功能較少)。我只需要簡單的節點和它們之間的邊緣。
它看起來像這樣(大概這或多或少是你想要做什麼):
這裏是核心JUNG功能的基本代碼片段:
public ArchitectureEditor(String title, MainWindow mainWindow, ArchObjContextConcern contextConcern) {
super(title);
setName(NAME);
graph = new DirectedSparseGraph<ArchObject, EdgeKey>();
layout = new StaticLayout<ArchObject, EdgeKey>(graph);
vv = new AutoCropVisualizationViewer(layout); //extends VisualizationViewer<ArchObject, EdgeKey>
vv.getRenderContext().setEdgeShapeTransformer(new EdgeShape.Line<ArchObject, EdgeKey>());
VERTEX_ICON_TRANSFORMER = new ArchObjIconTransformer(vv);
VERTEX_SHAPE_TRANSFORMER = new ArchObjShapeTransformer(vv);
vv.getRenderContext().setVertexShapeTransformer(VERTEX_SHAPE_TRANSFORMER);
vv.getRenderContext().setVertexIconTransformer(VERTEX_ICON_TRANSFORMER);
graphMouse = new ArchGraphMouse(mainWindow, contextConcern);
vv.setGraphMouse(graphMouse);
vv.addKeyListener(new ArchGraphKeyboard(mainWindow, this));
vv.setBackground(Color.WHITE);
ComponentUtils.setForcedSize(vv, 1, 1);
setLayout(new BorderLayout());
add(new JScrollPane(vv));
}
和對象圖表由:
- 1. 如何在neo4j中的節點間創建條件邊緣?
- 2. 如何在Gremlin中使用公共節點創建新邊緣?
- 3. Python:如何從csv文件創建圖形節點和邊緣?
- 4. 如何在節點之間創建多個加權邊緣
- 5. 使用邊框佈局創建GUI Swing
- 6. 節點和邊緣輪廓?
- 7. 如何使用Java swing創建可調整大小的GUI?
- 8. networkx邊緣到節點節點到邊緣的表示
- 9. 在Python/R中創建節點邊緣三角形鄰接圖
- 10. Python - 如何在ArangoDB中創建邊緣
- 11. 如何動態計算vis.js的節點和邊緣
- 12. 誰擁有Java Swing可滾動視口邊緣的顏色?
- 13. 如何在Java Swing中創建以下GUI?
- 14. 在OrientDB中創建邊緣
- 15. 在prefuse中創建4個節點和弧形邊緣的圓圈
- 16. 邊緣移動的控制點
- 17. 從通用XML動態創建Swing GUI
- 18. C#MSAGL - 如何創建:標題,副標題節點和工具提示邊緣
- 19. 在graphviz中從節點到邊緣繪製邊緣
- 20. d3邊緣重疊節點
- 21. 如何使用插件添加cytoscape.js中的節點和邊緣?
- 22. 如何創建的Java Swing
- 23. 在Jython中創建基於Swing的GUI
- 24. 使用Java Swing創建GUI時出錯
- 25. GraphStream渲染節點和邊緣緩慢
- 26. 如何在mxGraph邊緣創建圖像
- 27. 加快邊緣的創建基於節點
- 28. 如何移動基於邊緣的SKPhysicsBody?
- 29. Java - 如何創建可移動菜單
- 30. mxGraph圖像節點邊緣
這功課是?你到目前爲止獲得了哪些代碼? – Reimeus 2012-07-27 16:42:59
是的,這是我的學校項目,我還沒有開始任何編碼。 – Ramy 2012-07-27 17:55:09