实际上如何使用 GraphStream 在 swing 中绘制图形?

2024-02-25

我正在尝试实现绘图秋千内的教程图 http://graphstream-project.org/doc/Tutorials/Graph-Visualisation_1.1/#integrating-the-viewer-in-your-gui,但失败了。

代码如下:

包测试.graphstream;

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.graphstream.graph.Graph;
import org.graphstream.graph.implementations.SingleGraph;
import org.graphstream.ui.swingViewer.View;
import org.graphstream.ui.swingViewer.Viewer;

public class Tutorial1_01
{
    private static Graph graph = new SingleGraph("Tutorial 1");

    public static class MyFrame extends JFrame
    {
        private static final long serialVersionUID = 8394236698316485656L;

        //private Graph graph = new MultiGraph("embedded");
        //private Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_ANOTHER_THREAD);
        private Viewer viewer = new Viewer(graph, Viewer.ThreadingModel.GRAPH_IN_SWING_THREAD);
        private View view = viewer.addDefaultView(false);

        public MyFrame() {
             setLayout(new BorderLayout());
             add(view, BorderLayout.CENTER);
             setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                MyFrame frame = new MyFrame();
                frame.setSize(320, 240);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);

                graph.addNode("A");
                graph.addNode("B");
                graph.addNode("C");
                graph.addEdge("AB", "A", "B");
                graph.addEdge("BC", "B", "C");
                graph.addEdge("CA", "C", "A");

                graph.addAttribute("ui.quality");
                graph.addAttribute("ui.antialias");
            }
        });
    }
}

它画出了这个:

如果拖动节点,则变为:

如何获得结果,接近graph.display()?


这是一个副作用,因为节点没有x and y默认坐标。

为了防止这种情况,您应该:

  • 激活autolayout在你的viewer对象与viewer.enableAutoLayout();
  • 或者自己指定一些xand y每个节点的属性。

带自动布局

// ...
public MyFrame() {
     setLayout(new BorderLayout());
     add(view, BorderLayout.CENTER);
     setDefaultCloseOperation(EXIT_ON_CLOSE);
     // Activate autolayout here : 
     viewer.enableAutoLayout();
}
// ...

具有节点属性

// In main() ...
Node a = graph.addNode("A");
a.addAttribute("xy", 0, 0);
Node b = graph.addNode("B");
b.addAttribute("xy", 10, 0);
Node c = graph.addNode("C");
c.addAttribute("xy", 10, 10);
// ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实际上如何使用 GraphStream 在 swing 中绘制图形? 的相关文章

  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • 同一服务器上的许多应用程序具有相同的 JMX Mbean 类

    我有超过 5 个 Spring Web 应用程序 它们都在使用另一个通用库 这个公共库有它自己的 MBean 由于强制的唯一 objectName 约束 我的应用程序无法部署在同一服务器上 我使用 MBean 的方式是这样的 Managed
  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 自定义列表字段点击事件

    我正在编写一个应用程序 其中我创建了用于显示列表视图的自定义列表字段 我的 CustomListField 包含连续的一个图像和文本 我正在通过单击列表字段行获取字段更改侦听器 但我也想将字段更改侦听器放在图像上 谁能告诉我我该怎么做 这是
  • 未装饰窗户的 Windows Snap 功能?

    有谁知道如何允许未装饰的窗户使用此功能 唯一的选择就是重新实施它 有任何想法吗 谢谢 可停靠可能是唯一的JToolBar http docs oracle com javase tutorial uiswing components too
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 如何在 IntelliJ IDEA 中运行 akka actor

    来自 Akka 网站文档 然后 这个主要方法将创建所需的基础设施 运行演员 启动给定的主要演员并安排 一旦主要参与者终止 整个应用程序就会关闭 因此 您将能够使用类似于以下的命令运行上面的代码 下列的 java classpath akka
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • 从三点求圆心的算法是什么?

    我在圆的圆周上有三个点 pt A A x A y pt B B x B y pt C C x C y 如何计算圆心 在Processing Java 中实现它 我找到了答案并实施了一个可行的解决方案 pt circleCenter pt A
  • Lombok 不适用于 Eclipse Neon

    我下载了lombok jar lombok 1 16 14 jar 并将其放入我的下载中 然后我点击这个 jar 执行正确地识别了我的 MacOS 上的 Eclipse 实例 然后我选择了我想要的实例 Lombok也在pom xml中指定
  • Azure Java SDK:ServiceException:ForbiddenError:

    尝试了基本位置检索器代码 如下所示 String uri https management core windows net String subscriptionId XXXXXXXX 5fad XXXXXX 9dfa XXXXXX St
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • Android ScrollView,检查当前是否滚动

    有没有办法检查标准 ScrollView 当前是否正在滚动 方向是向上还是向下并不重要 我只需要检查它当前是否正在滚动 ScrollView当前形式不提供用于检测滚动事件的回调 有两种解决方法可用 1 Use a ListView并实施On
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat

随机推荐

  • 通过 Gradle 和 Android NDK 强制 CMake 处于详细模式

    我正在使用 Gradle 和 CMake 从命令行编译 Android NDK 项目 以前 我使用 Ant 和ndk build但我正在尝试将项目完全迁移到 Gradle 和 CMake In my build gradle我有以下几行来调
  • 为什么AWS SQS这么慢?

    我一直在测试发送消息和从 SQS 队列接收消息所需的时间 平均需要 800 1200 毫秒 这似乎是一个非常长的时间 这是我的测试代码 如果我做错了什么 请告诉我 var t0 sendMessage hello function send
  • PHP sqlsrv:从函数传递资源

    PHP 5 4 14 SQL Server 2012 SQL 客户端 2012 Windows 2008 R2 我有一个函数 简化版本如下 我调用它来运行 SQL 查询 它工作正常 连接到数据库 运行查询并获取有效资源 问题是返回的资源为空
  • Spring RESTful客户端:根标签异常

    我正在尝试按照此示例使用 RestTemplate 解析 RESTFull 调用的结果http thekspace com home component content article 57 restful clients in sprin
  • C# 在面板上绘图

    我正在制定一天的时间表 并用面板代表时间段 而约会则在顶部有更多面板 用户可以上下滚动 以便他们可以看到的范围提前或推迟 当约会超出可见范围的末尾时 我希望有一个锯齿形指示约会超出了可见范围 我已经确定了发生这种情况的情况 并调用了一个私有
  • XCode 4 中的“构建后测试”选项不起作用

    所以 我花了很长时间才弄清楚这个问题 我环顾四周 似乎找不到任何这方面的信息 我想要做的是让我的单元测试始终在每次我在 XCode 中构建代码时运行 我读过很多帖子 包括这个问题 https stackoverflow com questi
  • 使用加速度计计算距离

    在阅读了许多关于如何根据加速度数据测量距离的论坛之外的研究和论文之后 我找到了双重积分方法 但是与该方法相关的误差很大 并且随着时间的推移而增加 此外 我发现一些人建议卡尔曼滤波器 我读了一些有关它的参考资料 但我不清楚如何使用它 还有一些
  • 为各种 Typescript 输入文件定制特定的输出文件

    我有一个使用 TypeScript 的 Web 项目 它对编译的输出文件有一些相当复杂的要求 例如 我需要将一个目录中的所有 ts 文件编译为一个 js 文件 并将另一目录中的所有 ts 文件编译为不同的 js 文件 它比这更复杂 但你明白
  • 如何在 Mac OS X 上将 CALayer 添加到 NSView

    我正在尝试学习如何使用和实施CALayer在 Mac Objective C 应用程序中 但我似乎无法做最基本的事情 添加一个新图层并设置其背景颜色 框架大小 谁能看到我的代码有什么问题吗 CALayer layer CALayer lay
  • 如何为 Kubernetes 作业设置时间限制?

    我想启动一项 Kubernetes 作业并给它一个固定的完成期限 如果截止日期到来时 Pod 仍在运行 我希望该作业自动被终止 这样的事情存在吗 起初我以为工作规范是activeDeadlineSeconds涵盖了这个用例 但现在我看到了a
  • 当我在容器中运行节点服务器时出现“express.default is not a function”错误

    当我在远程容器内运行节点服务器时 我收到了 express default is not a function 错误 有什么线索吗 main ts 文件 import as express from express const server
  • 如何调用 iPhone 地图获取以当前位置作为起始地址的路线

    我知道可以通过调用来启动 iPhone 地图应用程序openURL在带有参数的谷歌地图 URL 上saddr and daddr带有位置字符串或纬度 经度 参见下面的示例 但我想知道是否可以将起始地址设为 当前位置 地图书签 以便我可以使用
  • 如何在 php 中使用 Spreadsheet_Excel_Writer() 在 Excel 单元格中输出超过 255 个字符?

    我试图在 Excel 电子表格中输出几段文本 但现在文本被截断为仅显示 255 个字符 代码非常简单 xls new Spreadsheet Excel Writer sheet xls gt addWorksheet name forea
  • 查看监听集合事件

    我有一个看法myView和一个集合myCollection 当我add一个模型myCollection the add事件被触发myCollection 我怎样才能拥有myView听听那个add event 您可以在实例化集合时将集合传递给
  • Android:RadioButton Toast 中的帮助

    如果用户单击 下一步 按钮而不选择选项 则必须显示一条消息 请选择任何一个 否则它应该转到下一个屏幕 我已经尝试过 但它不会进入下一个屏幕 而是显示吐司 请选择任何一个 和我的代码 public class Question1 extend
  • Vue - 添加 CDN 组件,无需 webpack

    我想添加this https cdn jsdelivr net npm vuejs auto complete 0 9 0 dist build js不使用 webpack 的情况下将组件添加到我的 Vue js 项目中 我尝试将其添加到h
  • BlackBerry 线程模型

    我读过很多评论 其中提到 BlackBerry 线程模型偏离了 Java 标准 可能会导致问题 但无论进行多少次谷歌搜索都没有让我明白这到底意味着什么 我一直在为 BlackBerry 开发一个相当大的业务应用程序 尽管我以前没有任何 Ja
  • 通过 Gmail 发送带有自定义方案的链接

    我正在尝试发送打开我的 Android 应用程序的深层链接 String body a href Link to simulation a Intent emailIntent new Intent android content Inte
  • Android 中的默认录音

    我注意到 Android 默认录音机可以感知你的声音有多大在 UI 参数中向您展示 http www androidtapp com wp content uploads 2009 08 OI Shopping Voice Recordin
  • 实际上如何使用 GraphStream 在 swing 中绘制图形?

    我正在尝试实现绘图秋千内的教程图 http graphstream project org doc Tutorials Graph Visualisation 1 1 integrating the viewer in your gui 但