GraphStream 2.0拖拽节点时鼠标指针偏移问题(未解决)
GraphStream Swing环境下拖拽节点鼠标指针偏移问题
- 拖拽节点时鼠标指针无法与节点正确对齐,界面右下角区域的偏移量会变得更严重
- 该问题与Stack Overflow上的同类问题完全一致,类似GraphStream FAQ中提及的JavaFX鼠标偏移问题,但发生在Swing环境中
- 已尝试所有可行方案:查阅GraphStream官方文档、FAQ,检查测试用例,还尝试过Stack Overflow上的建议解决方案,但问题依旧,拖拽行为没有任何改善
应用解决方案后的代码片段
DefaultView view = (DefaultView) viewer.addView("Graph", new SwingGraphRenderer(), false); view.setLayout(new BorderLayout()); view.setPreferredSize(frame.getSize()); view.setMouseManager(new DefaultMouseManager()); JPanel panel = new JPanel(); panel.add(view); frame.add(panel); view.setVisible(true); panel.setVisible(true);
完整最小复现示例代码
package main.java; import org.graphstream.graph.Graph; import org.graphstream.graph.Node; import org.graphstream.graph.implementations.DefaultGraph; import org.graphstream.ui.swing.SwingGraphRenderer; import org.graphstream.ui.swing_viewer.DefaultView; import org.graphstream.ui.swing_viewer.SwingViewer; import org.graphstream.ui.swing_viewer.util.DefaultMouseManager; import org.graphstream.ui.view.Viewer; import javax.swing.*; import java.awt.*; public class Example { public static void main(String[] args) { System.setProperty("org.graphstream.ui", "swing"); Graph g = new DefaultGraph("Graph"); Node n1 = g.addNode("V1"); Node n2 = g.addNode("V2"); g.addEdge("E1", "V1", "V2"); String style = "size: 30px; stroke-mode: plain; fill-color: rgba(223, 187, 254, 255);"; n1.setAttribute("ui.style", style); n2.setAttribute("ui.style", style); // g.display(); <- same behavior as dropping everything below this line. JFrame frame = new JFrame(); frame.setBounds(0, 0, 600, 600); frame.setLayout(new BorderLayout()); SwingViewer viewer = new SwingViewer(g, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD); viewer.enableAutoLayout(); DefaultView view = (DefaultView) viewer.addView(g.getId(), new SwingGraphRenderer(), false); view.setLayout(new BorderLayout()); view.setPreferredSize(frame.getSize()); JPanel panel = new JPanel(); panel.add(view); frame.add(panel); view.setMouseManager(new DefaultMouseManager()); view.setVisible(true); panel.setVisible(true); frame.setVisible(true); } }
项目pom.xml依赖配置
<dependencies> <dependency> <groupId>org.graphstream</groupId> <artifactId>gs-core</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.graphstream</groupId> <artifactId>gs-ui-swing</artifactId> <version>2.0</version> </dependency> </dependencies>
内容的提问来源于stack exchange,提问作者traveh
相关产品推荐
相关产品推荐

