很高兴今天成为了CSDN的专家,所以再忙也要抽空写一篇博客。最近公司有个需求要在RCP应用中用树状结构显示层级关系。我找了半天的开源框架,最后发现Eclipse REST最符合现在的需求。REST是专门用来显示图状效果的,废话少说了上效果,上代码。

public class DeviceTreeViewSWT {public static void main(String[] args) {Display d = new Display();Shell shell = new Shell(d);Image image1 = Display.getDefault().getSystemImage(SWT.ICON_INFORMATION);Image image2 = Display.getDefault().getSystemImage(SWT.ICON_WARNING);Image image3 = Display.getDefault().getSystemImage(SWT.ICON_ERROR);shell.setLayout(new FillLayout());shell.setSize(800, 800);Graph g = new Graph(shell, SWT.NONE);g.addSelectionListener(new SelectionAdapter() {public void widgetSelected(SelectionEvent e) {System.out.println(((Graph) e.widget).getSelection());}});g.setConnectionStyle(ZestStyles.CONNECTIONS_DIRECTED);GraphNode n1 = new GraphNode(g, SWT.NONE, "Virtual");n1.setBackgroundColor(new Color(d,255,0,0));GraphNode n2 = new GraphNode(g, SWT.NONE, "Shanghai");GraphNode n3 = new GraphNode(g, SWT.NONE, "Beijing");GraphNode n4 = new GraphNode(g, SWT.NONE, "AGM001");GraphNode n5 = new GraphNode(g, SWT.NONE, "AGM002");GraphNode n6 = new GraphNode(g, SWT.NONE, "AGM003");GraphNode n7 = new GraphNode(g, SWT.NONE, "AGM004");GraphNode n8 = new GraphNode(g, SWT.NONE, "AGM005");GraphNode n9 = new GraphNode(g, SWT.NONE, "AGM006");GraphNode n10 = new GraphNode(g, SWT.NONE, "AGM007");GraphNode n11 = new GraphNode(g, SWT.NONE, "AGM008");
//        class PathFigure extends PolylineConnection {
//            public PathFigure() {
//                setTargetDecoration(new PolylineDecoration());
//                setConnectionRouter(new ManhattanConnectionRouter());
//            }
//        }new GraphConnection(g, SWT.NONE, n1, n2);new GraphConnection(g, SWT.NONE, n1, n3);new GraphConnection(g, SWT.NONE, n2, n4);new GraphConnection(g, SWT.NONE, n2, n5);new GraphConnection(g, SWT.NONE, n2, n6);new GraphConnection(g, SWT.NONE, n3, n7);new GraphConnection(g, SWT.NONE, n3, n8);new GraphConnection(g, SWT.NONE, n5, n9);new GraphConnection(g, SWT.NONE, n5, n10);new GraphConnection(g, SWT.NONE, n4, n11);//g.setLayoutAlgorithm(new TreeLayoutAlgorithm(LayoutStyles.ENFORCE_BOUNDS), true);//g.setLayoutAlgorithm(new HorizontalTreeLayoutAlgorithm(LayoutStyles.ENFORCE_BOUNDS),true);g.setLayoutAlgorithm(new RadialLayoutAlgorithm(LayoutStyles.ENFORCE_BOUNDS),true);//g.setLayoutAlgorithm(new GridLayoutAlgorithm(LayoutStyles.ENFORCE_BOUNDS), true);shell.open();while (!shell.isDisposed()) {while (!d.readAndDispatch()) {d.sleep();}}image1.dispose();image2.dispose();image3.dispose();}
}

改下LayoutAlgorithm可以看到更炫的辐射状图

效果不错吧,用来显示图,树等都非常的方便

如果你用Jface封装的GraphViewer,那MVC使用起来更是方便.

转载于:https://www.cnblogs.com/hainange/archive/2011/07/07/6152977.html

Eclipse REST 库使用相关推荐

  1. Eclipse启动之二:Eclipse动态库(百度空间迁移)

    动态库中的主要实现文件是:eclipse.c 其主要功能定位启动Java虚拟机和显示Splash窗口(暂未用,通过在org.eclipse.equinox.launcher.Main中调用来显示) j ...

  2. Eclipse 动态库调试(联合调试)

    动态库调试: 如果一个工程依赖另一个工程的dll,那么调试时将看不到另外一个工程的源代码,在eclipse可以做到两个工程联合调试.方法是将另外一个也导入到eclipse,重新编译一遍生成dll,注意 ...

  3. 解决eclipse无法解析导入org.eclipse.swt库

    右键点击项目 -> Build Path -> Config Build Path... 然后选择Libraries标签页,点击Add External JARs... 再到你的eclip ...

  4. Eclipse——添加库(Add Library)到项目

    基本概念 添加库(Add Library):是指一些已经定义好的jar的集合,一些常用的jar的集合(如框架所带的jar),通过添加Library的方法,整个导入以一个整体的形式,方便多次使用 操作步 ...

  5. Eclipse——项目中使用jar包(添加到WEB-INF/lib目录下)

    前期准备 Eclipse--添加库(Add Library)到项目 解决方案 右键项目-properties 然后找到deployment assembly: 最后apply并close即可 参考文章 ...

  6. Ubuntu系统---C++之Eclipse 开始工程项目

    Ubuntu系统---C++之Eclipse 开始工程项目 安装完Eclipse,那就像其它项目一样,先要测试一下是否能用. 一.测一个hello world例子 二.利用OpenCV测试一个显示图片 ...

  7. eclipse中的java包awt_Eclipse中打包java程序

    Java应用程序可以脱离Eclipse运行,但在运行之前要把应用程序打成一个JAR包,Eclipse下打包的方式方法和标准的AWT/SWUNG程序基本一样,主要有以下几点: a.MANIFEST.MF ...

  8. 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)

    版本: Windows XP3 JDK1.6 Eclipse 3.7.1 (需要C++插件CDT) ADT 16.0.1 NDK7 (或是NDKR7B) cocos2d-1.0.1-x-0.11.0. ...

  9. eclipse jdt.core(一)——简介

    jdt是Java Development Tools的缩写,是eclipse支持java开发的核心插件.jdt core是jdt插件中的一个jar,本文用的jar是org.eclipse.jdt.co ...

最新文章

  1. CodeForces - 1401 F Reverse and Swap(线段树, 区间翻转, 区间交换,清晰易懂)
  2. NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法
  3. Linux中如何通过命令行访问Dropbox
  4. Benchmark简介
  5. 测试睡眠质量软件,2018测睡眠质量的app排行榜:推荐10款有趣又有效的睡眠APP
  6. python长度单位换算表_长度单位换算表大全
  7. Android 图文数据JSON解析,金山词霸每日一句API的调用
  8. 以程序员的方式解决武汉公积金用户注册页面无法点击下一步问题
  9. 葫芦书笔记----CNN和RNN
  10. android+源代码加密,震惊!Android 12开发者版源代码泄密
  11. 2022美赛F题题目及思路--人人为我,我(空间)为人人
  12. 爬虫爬取qq看点视频
  13. __filename意思
  14. Ubuntu查找软件命令
  15. 〖Python网络爬虫实战③〗- 爬虫的基本原理
  16. 剑灵系统推荐加点_《剑灵》各职业练级推荐修炼加点攻略
  17. hnoi2014米特运输
  18. JAVA读文件类之FileReader/InputStreamReader/BufferedReader
  19. bat和半导体公司的利润率的比较
  20. Unity 绿幕视频抠图算法原理与实现 -- 效果极好

热门文章

  1. python构建知识库_使用Mediawiki构建个人知识库
  2. 我最喜欢的科目是计算机课英语,初一英语作:my favorite subject(我最喜欢的科目)要求写美术课(art),80词以上,拜托啦!...
  3. java检测用户是否重复登录_Java web工程判断用户是否重复登录
  4. java计算加速减速_java – 使用JOCL / OPENCL计算强度的加速总和
  5. JS 动态清除Div中内容
  6. 《天天数学》连载47:二月十六日
  7. Python案例:给出三角形构成方案
  8. 【codevs2492】【Tyvj1941】上帝造题的七分钟2,线段树的特别技巧
  9. vex夹球机器人_汕头市4名中学生获2020年VEX机器人世锦赛初中组亚军
  10. 2017.2.18 loli测试