TWaver图形界面之道(五)Hello TWaver

继续上一章的介绍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);
04group.addChild(node);
05group.addChild(node2);
06group.addChild(link);
07box.addElement(group);
08 
09//添加告警
10AlarmModel alarmModel = box.getAlarmModel();
11//告警与node2关联
12 Alarm alarm = new Alarm(node2.getID(), AlarmSeverity.CRITICAL);
13alarmModel.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数据驱动视图的使用习惯。

TWaver图形界面之道(二)TWaver介绍 接上篇:TWaver图形界面之道(一)序言与目录 TWaver介绍 TWaver是一款图形界面组件产品,电信行业的朋友用它开发网管图形界面,非电信行业的用它制作的表格,指标图表,流程图。TWaver让界面开发变得简单,几行代码就可以实现组件与数据的绑定,组件与组件间的同步交互。TWaver提供多种界面组件,支持多种编程语言,这意味着无论你使用Java,.NET,Flex,还是JavaS 阅读详情

相关推荐

TWaver可视化软件(七) WEB组态可视化软件

关于这个软件,首先要从组态的概念开始说起。 组态(Configure)的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distributed Control System),可以理解为“配置”、“设定”、“设置”等,是指通过人机开发界面,用类似“搭积木”的简单方式来搭建软件功能,而不需要编写计算机程序。我们也可称之为“二次开发”,组态软件即为“二次开发平台”。 从用户操作与界面呈现的角度来说,组态软件采用标准HTML5技术,基于B/S架构进行开发,支持Web端呈现,在浏览器端即可完成便捷的人机交互

TWaver可视化 4254

Twaver-HTML5基础学习(2)基本数据元素(Data)

Data对象上的基本属性和如何自定义属性

见贤思齐焉,见不贤内自省 1387

TWaver数据可视化工具官方试用版实践指南

TWaver是一款强大的可视化开发工具包,主要用于构建信息图表和网络拓扑图。它支持多种编程语言,包括Java、JavaScript等,并适用于各种应用场景,如网络管理、监控系统、GIS等。TWaver提供丰富的图表元素和灵活的布局选项,让开发者能够快速实现复杂的可视化需求。为了实现自定义交互逻辑,TWaver提供了一系列的API来监听和响应用户的交互行为。开发者可以通过这些API捕获特定事件,并根据事件内容编写相应的处理逻辑。例如,通过监听。

weixin_30978239的博客 856

Twaver-HTML5基础学习(1)两点一线

我们需要明白 1.图元是最小的单元; 2.图元需要放置到容器中; 3.最终图元会渲染到画布上即可;

见贤思齐焉,见不贤内自省 3323

海康读码器上位机开发避坑指南:IDMVS客户端之外,如何用C# SDK搞定扫码、数据比对与实时控制?

本文详细介绍了如何利用海康读码器的C# SDK进行二次开发,实现从基础扫码到复杂工业控制的全流程解决方案。内容涵盖SDK架构解析、多设备管理系统构建、业务逻辑与设备控制实现,以及系统集成与性能优化等关键环节,为工业自动化领域的开发者提供实用指南。

weixin_30642561的博客 550

浅谈武术擂台格斗机器人大赛

武术擂台机器人赛是工科类专业的一个跨学科的竞赛项目,它涵盖了机械结构、硬件电路和计算机程序等技术领域。笔者在校期间有幸参加过四次这样的比赛,有成功也有失败,对此深有感悟。本文仅为个人观点,有说得不对的地方,望积极指出,希望能帮助到有需要的人。

weixin_43811044的博客 1万+

Hello TWaver Android

准备工作 首先需要搭建Android开发环境,安装eclipse和ADT(Android Development Tools)插件,并在Android SDK Manager中安装需要的SDK。开发人员需要掌握Java编程语言,具备Android开发的能力,最后你需要TWaver Android开发库文件(twaver.android.jar),这样就可以开始TWaver Android的开发了

TWaver可视化 1132

游戏经济数值模型的搭建过程——以标准卡牌游戏为例

一、总体规划 1.玩家分类 首先我们按照下表对玩家进行分类 付费能力即为充值额度;充值行为比如购买月卡/购买钻石;消费行为比如用钻石抽卡 在这里我们假设玩家是理性的,即玩家会以追求更高的性价比为目标进行充值与消费(即小R会优先买首冲+月卡,而不是买一个无用的无属性皮肤) 不同类型玩家之间的差异,实际上就主要由这些行为的差异而决定。 注:早期游戏制作的时候,活跃程度也是区分玩家类型的一个重要依据。不过目前现在游戏中有各种手段抹平了不同活跃玩家的差异(体力限制,活跃时间长的收益递减)..

dudu3332的博客 4228

TWaver阶段学习-入门篇

这段时间在学习了解TWaver这个3D建模的框架,下面是对这段时间学习成果的一个总结,也为自己梳理一下知识点。 TWaver介绍 TWaver是美国Serva Software公司的产品,是全球范围内先进的可视化管理软件,可以直接使用,也可根据需求二次开发,在电信、金融、交通等领域都有广泛应用。 主要就是能快速构建一个3D的交互式场景,能够方便快捷的管理电信服务器,电力工厂等。 更加详细的介绍请:...

快乐是一切的博客 7757

TB6600驱动器共阴共阳接法傻傻分不清?一张图搞定STM32与42步进电机的接线避坑指南

本文详细解析了TB6600驱动器共阴共阳接法的本质区别,提供了STM32与42步进电机的高效连接方案。通过实际案例和接线图示,帮助读者避免常见错误,确保驱动器与MCU的安全连接,提升项目稳定性。

weixin_28710999的博客 244

Twaver-HTML5基础学习(4)告警元素(Alarm)

Twaver-HTML5基础学习(4)告警元素(Alarm)

见贤思齐焉,见不贤内自省 1369

【Android 11】使用Android Studio调试系统应用之Settings移植(五):编译Settings 模块、解决编译错误

基于Andorid 11,系列第5篇文章,本章开始,终于轮到解决正主Settings的编译问题了,使用android studio编译出Settings.apk,能看到这一章的同学,也着实不容易了,再接再厉

上周的博客 3919

Twaver-HTML5基础学习(11)形状节点(ShapeNode)

Twaver-HTML5基础学习(11)形状节点(ShapeNode)

见贤思齐焉,见不贤内自省 1444

YOLOv8【第十章:多任务扩展深度篇·第16节】车道线检测——基于 YOLOv8-Seg 的车道线分割与拟合!

🏆 本文收录于 《YOLOv8实战:从入门到深度优化》 专栏。该专栏系统复现并梳理全网各类 YOLOv8 改进与实战案例(当前已覆盖分类 / 检测 / 分割 / 追踪 / 关键点 / OBB 检测等方向),坚持持续更新 + 深度解析,质量分长期稳定在 97 分以上,可视为当前市面上 覆盖较全、更新较快、实战导向极强 的 YOLO 改进系列内容之一。

**My Coding Family** 1万+

Linux ARM平台开发系列讲解(GPIO子系统) 2.3.2 GPIO子系统常用函数解析

1. 概述 该章节会记录一年常用的GPIO子系统常用函数,会更具情况不断更新 static inline int gpio_get_value(unsigned int gpio) 功能 :用于获取某个GPIO引脚上的值 gpio : gpio引脚号 返回值:非负值,得到的 GPIO 值;负值,获取失败。 static inline void gpio_set_value(unsigned int gpio, int value) static inline int gpio_cansleep(unsi

DSMGUOGUO的博客 668

认识TWaver

一、    概念介绍         TWaver是美国Serva Software公司的产品,是应用最为广泛的电信专业图形界面开发工具包,在电信行业应用非常广泛。TWaver关注于数据的图形展示,它是面向开发人员的,需要进行二次开发。         TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OS

黄爱岗廊坊师范学院信息技术提高班 第七期 2234

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TWaver3D入门探索——3D拓扑图之绽放的小球花

这样一簇绚烂丰满艳丽多姿的3D小球花,要多少代码才能完成?其实不足百行,您信吗?下面咱就看一下具体实现过程,让您分分钟学会用TWaver HTML5制作3D拓扑图。 搭建3D空间 首先为花簇的绽放建一个展示的舞台。接触过TWaver2D的都知道,box、network是必不可少的,但对3D场景来说,还远远不够。一是要添加镜头位置,确定我们在什么角度和距离进行观察;...

weixin_30360497的博客 474

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TWaver图形界面之道(三)TWaver产品家族

接上篇:TWaver图形界面之道(二)TWaver介绍 TWaver产品家族 TWaver Java TWaver Java是TWaver产品家族中历史最悠久、功能最强大、应用最广泛的一个分支。TWaver Java基于Java 2D和Java Swing技术,相比于JS、Flex、Silverlight、HTML5这些现在热门的Web前段技术,关注Java Swing技

TWaver可视化 1956

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)

Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)

见贤思齐焉,见不贤内自省 2258

Twaver-HTML5基础学习(33)自动布局

Twaver-HTML5基础学习(33)自动布局

见贤思齐焉,见不贤内自省 1068

Twaver-HTML5基础学习(37)network导出图片并下载

Twaver-HTML5基础学习(37)network导出图片并下载

见贤思齐焉,见不贤内自省 636

3D建模巨头Twaver--入门篇2

前面讲了twaver的一些基础和第一个简单的demo,对于创建模型更多的例子和样式讲解,在官方的api里面都有详细的说明的了,今天主要的是如何导入自定义的模型和利用官方的自带的模型快速创建一个场景。 导入依赖 想要导入自定义模型,除了需要导入基本的t.js之外,还要导入两个js文件。 index.html <!DOCTYPE html> <html> <head&gt...

快乐是一切的博客 2077
上一篇: TWaver图形界面之道(四)如何申请与技术支持
下一篇: Java Web Start实践:动态生成JNLP
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值