在我的java项目中,我需要使用swing创建一个GUI,在其中我将拥有一个类似画布的空间。用户应该能够单击并创建节点,然后用边链接节点(就像在MS Visio中创建UML关系图一样)。用户还应该能够将节点与边一起移动。然后,我的应用程序将保存网络并运行自私节点算法,用户应该能够在GUI上实时看到它(边的创建和消除)。我不确定需要使用哪些swing工具来完成此任务。(可以在WPF中完成吗?我必须使用什么工具来完成)
发布于 2012-07-28 00:50:46
试试这个
<dependency>
<groupId>jgraph</groupId>
<artifactId>jgraph</artifactId>
<version>5.13.0.0</version>
</dependency>我们用这个库创建了一个非常复杂的swing UI界面,里面有很多面向图形的结构。看看这里,http://www.jgraph.com,还是直接在这里,http://www.jgraph.com/images/business-large.png,这是你要找的吗?
发布于 2012-07-28 00:49:08
如果你正在尝试“使用你自己的”解决方案,我有一些建议:
显然,您将需要使用MouseAdapter.
paintComponent(...)方法中再次将节点呈现为矩形。由于这可能是家庭作业,所以我将留给您来制定细节和代码,但如果您在特定步骤中遇到困难,请随时返回您的代码。
发布于 2012-07-28 00:55:38
我建议你试试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));
}图中的对象表示为:

https://stackoverflow.com/questions/11692095
复制相似问题