- 浏览: 167266 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
qq_21380041:
954414957@qq.com
HTML5数据可视化第二弹:打造最美3D机房 -
qq_21380041:
楼主,求代码
HTML5数据可视化第二弹:打造最美3D机房 -
luoaz:
楼主能不能传个源码的附件上来, 分享学习下呢?
HTML5+WebGL 3D机房开发实例 -
xiaosi1278:
你好能不能把你讲的源代码发一下!!做参考403541110@q ...
TWaver 3D 编辑器的使用(一)----设计3D场景以及数据绑定 -
TWaverGeek:
BigBird2012 写道您好,您能把您使用TWaver导入 ...
TWaver导入导出AutoCAD DXF图纸
继续上一章的介绍TWaver图形界面之道(四)如何申请与技术支持
本章将以一个入门示例开始,介绍TWaver的基本使用,设计思想以及开发流程,如果你已经熟悉了TWaver的使用,熟悉了TWaver的MVC的设计模式,可跳过本章节。
Hello TWaver
以一个经典示例开始,创建两个节点和一条连线,并在不同组件中展现,然后我们会追加告警,观察界面的变化。
开发环境
TWaver有多个产品分支,不同的编程语言有不同的开发环境,比如TWaver Java支持JDK1.4+,TWaver Web支持各主流浏览器,TWaver Flex要求Flex SDK 3.4.2+,TWaver .NET需要.NET Framework 3.5+,Silverlight 3.0+,而HTML5版本要求比较现代的浏览器。不同的语言开发平台也不同,这些在我们的开发手册中都有介绍,本书不再重复:
TWaver Java入门:http://doc.servasoftware.com/pages/viewpage.action?pageId=18415915
TWaver Web入门:http://doc.servasoftware.com/pages/viewpage.action?pageId=19010174
TWaver Flex入门:http://doc.servasoftware.com/pages/viewpage.action?pageId=16547882
TWaver .NET入门:http://doc.servasoftware.com/pages/viewpage.action?pageId=19008968
TWaver HTML5入门:http://doc.servasoftware.com/pages/viewpage.action?pageId=20776443
以TWaver Java为例
首先我们需要twaver.jar,这可以在TWaver Java试用包中找到,关于如何TWaver的申请可以阅读前面的章节:“TWaver如何获取”。
创建一个拓扑图
我们使用Eclipse开发工具,新建一个Java应用程序工程,引入twaver.jar,创建HelloTWaver类,编写下面的代码:
01 |
import java.awt.BorderLayout;
|
02 |
import java.awt.Component;
|
03 |
import javax.swing.JFrame;
|
04 |
05 |
import twaver.*;
|
06 |
import twaver.network.TNetwork;
|
07 |
08 |
public class HelloTWaver {
|
09 |
public static void main(String[] args) {
|
10 |
//创建DataBox
|
11 |
TDataBox box = new TDataBox();
|
12 |
13 |
//增加两个节点和一条连线
|
14 |
Node node = new Node();
|
15 |
node.setName( "Hello" );
|
16 |
node.setLocation( 10 , 10 );
|
17 |
box.addElement(node);
|
18 |
19 |
Node node2 = new Node();
|
20 |
node2.setName( "TWaver" );
|
21 |
node2.setLocation( 200 , 150 );
|
22 |
box.addElement(node2);
|
23 |
24 |
Link link = new Link(node, node2);
|
25 |
link.setName( "Hello TWaver" );
|
26 |
link.putLinkLabelRotatable( true );
|
27 |
box.addElement(link);
|
28 |
29 |
//定义拓扑图组件
|
30 |
TNetwork network = new TNetwork(box);
|
31 |
32 |
//显示拓扑图组件
|
33 |
showFrame( "Hello TWaver" , network);
|
34 |
}
|
35 |
36 |
public static JFrame showFrame(String title, Component component) {
|
37 |
JFrame frame = new JFrame();
|
38 |
frame.setTitle(title);
|
39 |
frame.getContentPane().add(component, BorderLayout.CENTER);
|
40 |
frame.setSize( 800 , 600 );
|
41 |
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
42 |
TWaverUtil.centerWindow(frame);
|
43 |
frame.setVisible( true );
|
44 |
return frame;
|
45 |
}
|
46 |
} |
细看代码,分为四部分:创建DataBox;增加两个节点和一条连线;定义拓扑图组件;显示拓扑图。
运行代码,得到如下界面:
增加树,表格和属性页
然后增加树,表格,属性页等组件,并用JSplitPane布局显示,代码如下:
01 |
public class HelloTWaver {
|
02 |
public static void main(String[] args) {
|
03 |
...
|
04 |
//创建树组件
|
05 |
TTree tree = new TTree(box);
|
06 |
07 |
//创建属性页组件,并设置为可编辑
|
08 |
TPropertySheet sheet = new TPropertySheet(box);
|
09 |
sheet.setEditable( true );
|
10 |
11 |
//创建表格组件,设置为可编辑
|
12 |
TElementTable table = new TElementTable(box);
|
13 |
table.setElementClass(Element. class );
|
14 |
table.setEditable( true );
|
15 |
16 |
//分别将属性页和表格组件放置在滚动面板中,这样可以保证表头的正确显示
|
17 |
JScrollPane tablePanel = new JScrollPane(table);
|
18 |
JScrollPane sheetPanel = new JScrollPane(sheet);
|
19 |
20 |
//显示这些组件
|
21 |
showSplitPane( "Hello TWaver" , getSplitpane(tree, sheetPanel, 300 , false ), getSplitpane(network, tablePanel, 300 , false ), 100 );
|
22 |
}
|
23 |
24 |
public static JFrame showSplitPane(String title, JComponent left, JComponent right, int leftLocation) {
|
25 |
JSplitPane mainPane = getSplitpane(left, right, leftLocation, true );
|
26 |
return showFrame(title, mainPane);
|
27 |
}
|
28 |
29 |
public static JSplitPane getSplitpane(JComponent firstPane, JComponent secondPane, int location, boolean isHorizontal) {
|
30 |
JSplitPane mainPane = new JSplitPane();
|
31 |
if (isHorizontal) {
|
32 |
mainPane.setRightComponent(secondPane);
|
33 |
mainPane.setLeftComponent(firstPane);
|
34 |
mainPane.setDividerLocation(location);
|
35 |
} else {
|
36 |
mainPane.setOrientation(JSplitPane.VERTICAL_SPLIT);
|
37 |
mainPane.setBottomComponent(secondPane);
|
38 |
mainPane.setTopComponent(firstPane);
|
39 |
mainPane.setDividerLocation(location);
|
40 |
}
|
41 |
return mainPane;
|
42 |
}
|
43 |
...
|
44 |
} |
上面的代码创建了树,表格。属性页组件,添加到窗体面板,这里有两个细节值得注意:一个是JScrollPane的使用,Swing中的表格组件需要放置在滚动面板,也就是JScrollPane中,这样表格列头才能正常显示,TWaver中的表格组件和属性页组件都是继承于Swing的JTable,所以需要用JScrollPane包装一下;还有一个细节是代码设置了表格和属性页为可编辑,简单的一行代码,就可以实现节点和连线属性的编辑。
让我们来运行程序,得到如下界面:
添加告警
最后来尝试告警的使用,为了更好的展示告警传递效果,这里修改了网员的层次结构,增加了一个分组元素,并将前面创建的两个节点和一条连线设置为这个分组的孩子节点,然后我们像告警容器中添加一条紧急告警,这个告警与节点”TWaver”关联,添加下面的代码:
01 |
//添加分组 |
02 |
Group group = new Group();
|
03 |
group.setExpand( true );
|
04 |
group.addChild(node); |
05 |
group.addChild(node2); |
06 |
group.addChild(link); |
07 |
box.addElement(group); |
08 |
09 |
//添加告警 |
10 |
AlarmModel alarmModel = box.getAlarmModel(); |
11 |
//告警与node2关联 |
12 |
Alarm alarm = new Alarm(node2.getID(), AlarmSeverity.CRITICAL);
|
13 |
alarmModel.addAlarm(alarm); |
运行界面如下,告警在拓扑图组件和树组件都有展示,节点“TWaver”被渲染为红色,它上面的红色冒泡(1C)表示有一条级别为紧急的新发告警产生,网元上的告警还会向其父节点传递,拓扑图和树图上都可以看到分组节点的渲染边框。点击节点“TWaver”属性页中可以显示它的告警状态属性。
Hello TWaver 示例的启示
每个TWaver产品分支有各自的Hello TWaver示例,这是TWaver入门的第一课,通过简单的示例,传递给大家对TWaver开发的一些启示:代码简洁,直观,实时联动,模型与视图分离。
代码简单
除了TWaver Web涉及到前后台的结合,比较复杂外,TWaver其他产品分支都很容易入门,比如TWaver Java的示例,只需要一个Java类,几行代码就可以制作一个完整的,可以操作的拓扑图界面,不需要安装第三方插件,不需要配置,都是最基本的Java编程,Flex编程或者.NET程序开发。
编码直观
界面编程最大的好处就是直观,每一行代码的设置在界面上都能直接看到效果,同样TWaver的特性很容易直观的展现,可以去尝试修改网元的样式属性,直接运行就可以看到效果,这为TWaver的学习提供了帮助,如果配合上我们的编辑器,很多图形效果都可以自己摸索和发现。
界面联动
TWaver的强大之一体现在多种界面之间的数据同步,交互同步,在Hello TWaver中我们可以看到,简单的创建组件,无需额外的代码,就能实现拓扑图的拖拽,框选,缩放等操作,各个组件中都可以同步选中网元,显示被选中网元的信息可以在属性表中显示,并且能够直接编辑,同步更新到各个组件。
M-V分离
通过Hello TWaver的示例还能了解到TWaver的开发习惯,TWaver使用MVC的设计模式,在入门示例中我们可以很明显的体会到M-V的关系,M就是数据,创建网元添加到数据容器,V是视图组件,创建组件,关联上M(数据容器)即可,如果不需要特殊的交互,组件的创建往往只是一行代码,更多的工作在于数据的填充,这正是TWaver数据驱动视图的使用习惯。
发表评论
-
HTML5+WebGL 3D机房开发实例
2015-09-30 15:28 11652前阵子写了一篇HMTL5 3D ... -
HTML5 3D水源监控系统
2015-09-07 23:29 1400天津港爆炸事件后,除 ... -
看HTML5如何化解大型复杂网络拓扑图的分组嵌套效果
2015-06-25 14:12 3642忙完3D,最近又开始用HTML5给客户开发网管界面。这次客 ... -
HTML5数据可视化第二弹:打造最美3D机房
2015-06-01 14:25 12797最近项目开发任务告一段落,刚好有时间整理这大半年的一些成果 ... -
HTML5组织结构图之名片式网元布局
2015-05-07 11:43 2484组织结构图(Organization chart)是企业的 ... -
HTML5流程图之矢量可伸展workflow
2015-05-06 17:17 11468互联网购物成了当今非 ... -
数字图像处理技术在TWaver可视化中的应用
2015-04-16 14:30 734数字图像处理(Digital Image Processin ... -
用拓扑图呈现多层级关系图
2015-04-13 11:51 1686大部分拓扑图界面都有显示“分级呈现”的需求。一个复杂的系统或 ... -
3D赛瓦号——整装待发!
2015-02-16 10:51 693随着岁末将至,twaver开发团队依旧马不停蹄,3d产品功 ... -
在TWaver的Tree节点上画线
2015-01-13 10:27 960论坛上有同学提出如何在tree上画引导线,之前我们Flex已 ... -
如何实现TWaver 3D颜色渐变
2014-10-21 13:37 549一般而言,需要实现3D物体的渐变,通常的思路就是通过2D绘制 ... -
被忽视的TWaver功能(1)
2014-10-13 09:44 1304应客户需求写个Demo,Demo中包含一些常用的功能,包括解 ... -
TWaver GIS在电信中的使用
2014-10-09 14:56 551GIS作为信息系统的重要组成部分,在电信行业中的应用由来已久。 ... -
TWaver MONO模板库新鲜出炉 精彩纷呈
2014-08-05 11:39 939MONO Design在线3D建模平台网站, www.mon ... -
如何允许WebGL从本地载入资源
2014-05-06 10:18 897随着mono-design不断推广,用户越来越多,陆续有电 ... -
在3D场景中显示汉字
2012-08-07 12:01 0TWaver 3D for Flex本身支持3 ... -
GeoServer快速发布地图数据
2012-08-07 11:54 0TWaver GIS提供了WMS的客户 ... -
让Swing表格支持远程后台数据翻页
2012-08-06 17:04 0TWaver Java不但提供了TTable、TElement ... -
用TWaver HTML5定制五彩斑斓的链路
2012-08-07 09:35 1341最近有客户提到自定义链路的需求,个人感觉非常有代表意义,现在共 ... -
使用3D呈现拓扑的多层次结构
2012-08-07 09:35 1152关于3D场景在现在网管中的应用的讨论一直没有停止过,应用场景有 ...
相关推荐
孙允中临证实践录.pdf
Rqalpha-myquant-learning对开源项目Rqalpha的改造,在应用上面更适合个人的应用。学习量化策略,对量化策略进行开发调试。2018-05-25程序更新集成大鱼金融提供的分钟线回测Mod,用来提供Jaqs分钟线数据源,测试程序通过。目前的改造情况1.增加ats.main.py,来驱动起回测,使程序可以使用pycharm进行开发调试2.增加批量回测功能3.在AlgoTradeConfig中进行配置回测的策略和所需要的参数信息,参数信息通过excel文件进行配置4.在ats.main.py中设置参数为batch,运行回测,会将输出的.csv文件放在cvsResult目录下,将回测的图片保存在picResult目录下。5.读取回测的.csv文件,提取账户信息,可以将不同参数回测的结果输出在同一张图片上,更加清晰的看清同一个策略,不同参数所带来的变化。6.从广发信号站点获取历史交易信号(站点已停止,此处无法继续)7.增加通用函数的封装,现阶段增加了对TA_LIB的调用封装(未完整完成)8.增加了对增量资金定投的情况的模拟,用
航班背景随着国内民航的不断发展,航空出行已经成为人们比较普遍的出行方式,但是航班延误却成为旅客们比较头疼的问题。台风,雾霾或飞机故障等因素都有可能导致大面积航班延误的情况。大面积延误给旅客出行带来很多不便,如何在计划起飞前2小时预测航班延误情况,让出行旅客更好的规划出行方式,成为一个重大课题。要求提前2小时(航班计划起飞时间前2小时),预测航班是否会延误3小时以上(给出延误3小时以上的概率)
comsol变压器绝缘油中流注放电仿真,使用PDE模块建立MIT飘逸扩散模型。 模型到手即用,提供MIT鼻祖lunwen中文版,及相关学习笔记资料。 流注放电,绝缘油,油纸绝缘。
基于STM8单片机的编程实例,可供参考学习使用,希望对你有所帮助
云南大数据交通太阳的云南大数据交通
comsol激光打孔(不通)水平集两相流仿真模型,涉及温度场流场水平集, 模型为复现模型,仅供学习,可自己更材料功率等参数 爽快确认模型无误并收送变形几何三维打孔模型或水平集抛光模型。
哈工深 自适应滤波课堂笔记
Django框架实现学生信息管理系统 总体概括 注册流程 首先进行输入用户名(邮箱)、密码以及验证码,输入完之后点击注册按钮。如果输入的不正确,提示错误信息。 如果一切信息填写正确无误,调用STMP模块发送激活邮件,用户必须要点击接收到邮箱链接,进行邮件激活后才方可登陆。 即使注册成功,没有激活的用户也不能登陆,用户以get的方式直接重定向到注册页面。 注册登录: 用户能在系统中进行登陆注册和忘记密码进行找回的功能。 个人中心:修改头像,修改密码,修改邮箱,可以看到我的信息。 日志记录: 记录后台人员的操作,方便发现BUG和查看各项调用进行时间。 导航栏:学生信息中有基本信息、年级及成绩信息的模块,能够排序筛选等功能。 多选操作: 可以选择多条记录进行删除操作,还可以在课程列表页可以对不同课程进行排序。 数据页码: 可以设置各项数据在每一页中显示的数量多少,进行翻页功能。 模块列表页: 能够有过滤器功能,在范围内进行查看数据。还能将数据导出为csv,x
车辆主动悬架防侧翻控制 利用Simulink和Carsim进行联合仿真,搭建主动悬架以及防倾杆模型,在不同转角工况下进行仿真试验,设置滑模等控制器计算维持车辆侧倾稳定性所需的力矩,将力矩分配到各个悬架实现控制效果。 控制效果良好,保证运行成功。 项目报告撰写请单独。
计算机系毕业设计
资源描述: HTML5实现好看的MT外卖订餐网站源码,好看的酷炫的MT外卖订餐网站源码,酷炫的MT外卖订餐网站源码模板,HTML酷炫的MT外卖订餐网站源码,内置酷炫的动画,界面干净整洁,页面主题,全方位介绍内容,可以拆分多个想要的页面,可以扩展自己想要的,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接运行使用。也可直接预览效果。 资源使用: 点击 index.html 直接查看效果
MDPI下的sensors模板,.docx格式
新医林改错《内经·素问》分册.pdf
命令行查看基金、个股数据,使用天天基金和新浪财经的数据接口,欢迎大家fork基金2.0命令行查看基金、个股数据,使用天天基金和新浪财经的数据接口,欢迎大家fork环境准备运行环境Python3 所需的软件包requests prettytable colorama基金自选修改my_jijin.txt文本文件,每行都是一个您关注的基金代码启动方式python3 main.py
NiuCloud-Admin-SAAS 是一款快速开发SaaS通用管理系统后台框架, 前端采用最新的技术栈Vite+TypeScript+Vue3+ElementPlus最流行技术架构,后台结合PHP8、Java SDK、Python等主流后端语言搭建是一款快速可以开发企业级应用的软件系统。
脉振方波高频注入代码+增强型滑膜esmo代码,永磁同步电机高频注入程序 资料为C代码一份,大厂代码,可运行,经典流传; 配套一篇代码对应的说明文档,详细算法说明; 脉振方波注入方法相对于脉振正弦信号注入的形式,信号处理的过程少了一些滤波器 ,计算更简单,并且由于信号频段较高,可以实现更高的动态响应能力。 增强滑膜控制;
逆变器下垂控制,微电网逆变器孤岛下垂控制,波形输出完美
multisim学习电路基础视频共42讲(个人觉得超赞)5G提取方式是百度网盘分享地址
基于 Vue 数据可视化组件(类似阿里DataV,大屏数据展示)编辑器。基于 Vue 数据可视化组件(类似阿里DataV,大屏数据展示)编辑器。项目初始化npm install启动开发环境npm run dev项目打包上线npm run buildLints和fixes文件npm run lint