You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:40:41