用TWaver Java制作精美的图层叠加图

TWaver数据可视化工具官方试用版实践指南 TWaver是一款强大的可视化开发工具包,主要用于构建信息图表和网络拓扑图。它支持多种编程语言,包括Java、JavaScript等,并适用于各种应用场景,如网络管理、监控系统、GIS等。TWaver提供丰富的图表元素和灵活的布局选项,让开发者能够快速实现复杂的可视化需求。为了实现自定义交互逻辑,TWaver提供了一系列的API来监听和响应用户的交互行为。开发者可以通过这些API捕获特定事件,并根据事件内容编写相应的处理逻辑。例如,通过监听。 阅读详情
 在TWaver的各个使用手册,文档和Demo中我们可以看到,TWaver提供了Layer的概念,就是图层,这与一些制图软件也有几分相似。在实际应用中也是比较的多。比如TWaver的Demo中有TWaver水印的字样,就是通过使用的TWaver层,将带有水印文字的图层自于最上方并不可选中。
下面我们再通过一个实际的例子具体来看看TWaver Layer的叠加效果,先上最终效果图:

这是一个使用TWaver Java制作的自动布局的例子,有人能看得出这里使用了多少个图层合并而成的吗?
呵呵,我们先来看看整体的一个布局:首先frame中添加了一个LayeroutPanel,panel中放了一个network,network中间部分是用于存放网元,连线,右半部分是scrollPanel 。

一.    Network的叠加

我们先来看看中间这个network的图层是如何叠加的
1.阴影层
首先是在network的Cushion上添加了一个网元阴影层,cushion在TWaver的定义中是处于所有图层之下的一层。

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> network.addCanvasCushion( new  ShadowCushion( this ));



阴影也可以这样添加。
2.网元层 

在默认图层上添加布局的网元 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  1 this .cloud  =   this .createNode( " /demo/layout/images/cloud.png " );
 2 this .center1  =   this .createNode( " /demo/layout/images/center.png " );
 3 this .center2  =   this .createNode( " /demo/layout/images/center.png " );
 4 this .gather1  =   this .createNode( " /demo/layout/images/gather.png " );
 5 this .gather2  =   this .createNode( " /demo/layout/images/gather.png " );
 6 this .router1  =   this .createNode( " /demo/layout/images/router1.png " ,  0 ,  " Router 1 " );
 7 this .router2  =   this .createNode( " /demo/layout/images/router2.png " ,  1 ,  " Router 2 " );
 8 this .server1  =   this .createNode( " /demo/layout/images/pc.png " ,  2 ,  " Spring Layout " );
 9 this .server2  =   this .createNode( " /demo/layout/images/pc.png " ,  3 ,  " Office Network " );
10 this .server3  =   this .createNode( " /demo/layout/images/pc.png " ,  4 ,  " US Map " );
11 this .client1  =   this .createNode( " /demo/layout/images/pc.png " ,  5 ,  " Bar Chart " );
12 this .client2  =   this .createNode( " /demo/layout/images/pc.png " ,  6 ,  " Tag Cloud " );
13 this .client3  =   this .createNode( " /demo/layout/images/pc.png " ,  7 ,  " Bus Layout " );
14 this .createLink(gather1, client1);
15 this .createLink(gather1, client2);
16 this .createLink(gather1, client3);
17 this .createLink(gather2, server1);
18 this .createLink(gather2, server2);
19 this .createLink(gather2, server3);
20 this .createLink(cloud, center1);
21 this .createLink(cloud, center2);
22 this .createLink(router1, center1);
23 this .createLink(router2, center2);
24 this .createLink(router1, gather1);
25 this .createLink(router2, gather2);



TWaver提供了多种布局的效果,这是一个左树形布局,下面的toolbar上提供了更多的布局方式。
3.背景层 

设置network背景图片,背景层也是处于所有数据层之下的一层,但是在cushion层之上 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1 this .setImageBackground( " /demo/layout/images/bottom.png " );



4.顶层 

添加top的图层节点,并设置图层为1 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1 this .top  =   this .createNode( " /demo/layout/images/top.png " );
2 this .top.setLayerID( " top " );
3 Layer topLayer  =   new  Layer( " top " );
4 topLayer.setMovable( false );
5 topLayer.setSelectable( false );
6 this .getDataBox().getLayerModel().addLayer( 1 , topLayer);



使用一个Node最为最上层的图片,哈哈,这也是TWaver中的一个使用技巧。
 

5.工具条层 

添加toolbar图层并设置为1,这样toolbar的图层会在top层之上 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> this .toolbar  =   this .createNode( " /demo/layout/images/toolbar.png " );
this .toolbar.setLocation( 21 ,  68 );
this .toolbar.setLayerID( " toolbar " );
Layer toolbarLayer 
=   new  Layer( " toolbar " );
toolbarLayer.setMovable(
false );
toolbarLayer.setSelectable(
false );
this .getDataBox().getLayerModel().addLayer( 1 , toolbarLayer);



工具条也是一张图片哦,哈哈,没想到吧! 

工具条的动画效果

从上面分解中可以看出,工具条是叠加在top层之上的,这其中还有一个动画的效果,当鼠标移动到工具条所有的区域范围时,才会出现,移出并会隐藏。 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  1 this .getCanvas().addMouseMotionListener( new  MouseMotionAdapter()  {
 2    public void mouseMoved(MouseEvent e) {
 3        if(isAdjustingToolbar){
 4            return;
 5        }

 6        if(toolbarBounds.contains(e.getPoint())){
 7            if(!toolbar.isVisible()){
 8                isAdjustingToolbar = true;
 9                toolbar.setVisible(true);
10                TWaverUtil.animateMove(toolbar, toolbar.getWidth(), 0, new Runnable(){
11                    public void run() {
12                        isAdjustingToolbar = false;
13                    }

14                }
);
15            }

16        }
else{
17            if(toolbar.isVisible()){
18                isAdjustingToolbar = true;
19                TWaverUtil.animateMove(toolbar, -toolbar.getWidth(), 0, new Runnable(){
20                    public void run() {
21                        toolbar.setVisible(false);
22                        isAdjustingToolbar = false;
23                    }

24                }
);
25            }

26        }

27    }

28}
);

 

6.最终合并效果
最后twaver根据添加的这些图层顺序,就会在network上叠加出一个左半部分的效果,如下: 



二.    ScrollPanel的叠加

看完network中间部分的叠加效果,我们再来看看这张图的右半部分scrollerPanel是如何叠加的

1. 组件层

这是最重要的放置内容面板的一层,里面放置了24个独立的组件。通过设置边框的范围让其只显示中间部分,每个独立的组件都可以单独操作:选中,移动,染色,tooltip…都可以呈现。

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  1 for ( int  i = 0 ; i < 24 ; i ++ ) {
 2JComponent component = null;
 3int index = i % 8;
 4if(index == 0){
 5       component = new Router1();
 6}

 7 
 8if(component != null){
 9        component.setPreferredSize(CARDSIZE);
10        component.setMaximumSize(CARDSIZE);
11        component.setMinimumSize(CARDSIZE);
12        component.setBounds(XGAP, i*CARDSIZE.height+YGAP, CARDSIZE.width-XGAP*2, CARDSIZE.height-YGAP*2);
13        this.add(component);
14    }

15
16}



2.相框层

这是一个给每个组件设置相框的一个图层,首先我们需要相框图片


设置成透明效果,将其放置每个组件之上(除了最中间的component之外),最中间的再通过画笔画上上左下右的边框,这样这个相框就完成了

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  1 Rectangle rect  =   new  Rectangle( 0 , i * CARDSIZE.height, CARDSIZE.width, CARDSIZE.height);
 2              if (i  !=  ( this .currentIndex  +   8 )) {
 3                g2.drawImage(CARDIMAGE, rect.x, rect.y, rect.width, rect.height, null);
 4            }
else {
 5                rect.grow(-XGAP+4, -YGAP+4);
 6                g2.setColor(Color.white);
 7                g2.setStroke(TWaverConst.BASIC_STROKE);
 8
 9                int d = 8;
10                g2.drawLine(rect.x, rect.y, rect.x+d*2, rect.y);
11                g2.drawLine(rect.x, rect.y, rect.x, rect.y+d);
12
13                g2.drawLine(rect.x+rect.width, rect.y+rect.height, rect.x+rect.width-d*2, rect.y+rect.height);
14                g2.drawLine(rect.x+rect.width, rect.y+rect.height, rect.x+rect.width, rect.y+rect.height-d);
15            }

 

3.蒙版层

这是最上边的类似于蒙版的一层,通过两张上下透明的图片将其放置在scrollerPane的最上边一层

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->  1 if (top) {
 2    image = TWaverUtil.getImageIcon("/demo/layout/images/mist1.png");
 3}
else {
 4    image = TWaverUtil.getImageIcon("/demo/layout/images/mist2.png");
 5}

 6 JComponent canvas  =   new  JComponent() {
 7    public void paintComponent(Graphics g) {
 8    super.paintComponent(g);
 9        g.drawImage(image.getImage(), 0, 0, image.getIconWidth(), image.getIconHeight(), null);
10    }

11}
;



蒙版层上也是有动画效果的,当鼠标点击上或下的蒙版,组件面板会自动上移或下移一个

4.最终叠加效果

这样两张图片一叠加就可以得到我们最开始提供的那种图了。



视频

http://v.youku.com/v_show/id_XMjA0MjM3NDky.html

PS:这是一个网元图层的例子,在实际应用中,用户可以将网元设置在不同的layer上,由此来控制网元上下显示顺序。对于同一层上的图元,被选中的网元会处于其他网元之上。 

TWaver Java 4.5.0:数据可视化专业库 随着信息技术的不断进步,数据可视化已成为不可或缺的一部分,特别是在企业软件和大数据处理领域。twaver 4.5.0作为一个成熟的Java图形和数据可视化库,能够帮助开发人员构建交互式图表和图形界面,以直观展示复杂的数据信息。它的用户界面组件和丰富的图表类型,使得信息的呈现变得既美观又高效。本章将简要介绍twaver 4.5.0的核心功能和使用场景,为后续章节深入探讨其组件架构、图表定制及性能优化等奠定基础。twaver的演示程序通常会包含以下亮点功能:各种图表类型展示。 阅读详情

相关推荐

twaver java 4.5.0

TWaver-java的库TWaver.jar

TWaver Java电信行业

TWaver是一套基于Java技术的界面软件开发组件包,主要应用于电信行业,也可应用于电力、金融、制造、交通等行业的软件开发中。一般的Java软件系统图形界面开发需要花费大量的时间和人力,运行效率低下,界面不够专业美观。如果采用TWaver组件来开发Java软件界面,可以非常简单快速的创建精美、专业、高效的图形化界面,提高开发和运行效率,增加客户满意度,提高软件竞争力。  TWaver由以下部分组...

shangtang的博客 779

twaver-api

twaver4.3.6版本的api,可以本地阅读,不需要去官网上看了,方便点。

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

twaver for java 开发api

twaver for java 4.47api,网页版本!开发人员必须api!

twaver-java-4.1

最新的TWaver可视化学习开发包,用TWaver做出更炫更美的界面。

java twaver_《TWaver Java开发手册》.pdf

《TWaver Java开发手册》.pdfTWaver® Java开发手册Version 3.7Dec 2010Serva Softwareinfo@PO Box 8143, Wichita Falls, Texas, USA 76307For more information about Serva Software and TWaver please visit the web site a...

weixin_33445930的博客 356

twaver-java-3.7

twaver-java-3.7 文档

java swing 图层_用Swing制作精美的图层叠加图

在TWaver的各个使用手册,文档和Demo中我们可以看到,TWaver提供了Layer的概念,就是图层,这与一些制图软件也有几分相似。在实际应用中也是比较的多。比如TWaver的Demo中有TWaver水印的字样,就是通过使用的TWaver层,将带有水印文字的图层自于最上方并不可选中。下面我们再通过一个实际的例子具体来看看TWaver Layer的叠加效果,先上最终效果图:这是一个使用TWave...

weixin_33766046的博客 827

Allegro如何导出和导入器件模型Signal_Model操作指导

在用Allegro做PCB设计的时候,通常需要给器件加上Signal_Model,在做等长的时候用到的非常频繁。如下图,需要把R7002的Signal_Model导入到另外一块没有给R7002加好模型的BRD中。Allegro除了可以给器件添加模型,还支持从一块加好模型的BRD导入到另外一块BRD中,如何导出和导入器件模型Signal_Model操作指导。

weixin_54787054的博客 1896

基于Python的股票K线图爬取与形态识别系统

本文详细介绍了一个基于Python的股票K线图爬取与形态识别系统。该系统通过网络爬虫技术获取股票历史数据,使用Matplotlib生成K线图,并应用卷积神经网络(CNN)对经典K线形态进行识别。文章详细阐述了数据采集、K线图生成、CNN模型构建与训练的完整流程,并提供了完整的代码实现。本研究为金融科技领域的毕业设计提供了有价值的参考方案。关键词:Python爬虫、K线图、卷积神经网络、形态识别、股票交易。

2201_76125261的博客 1033

用Swing制作精美的图层叠加图

前段时间,看着不少人用Swing在写东西,比如我们的Swing刀客  和 Swing剑客(注三号管家chart图的模仿),都用到了写出了很漂亮的swing界面。下面我要分享的是用swing编写的图层叠加效果图,其中也用到了twaver的一些功能。(在此仅仅是为了分享给大家比较美的界面,希望能在这酷暑之际为大家带来一丝凉意或美的享受就心满意足了)。 在TWaver的各个使用手册,文档或Demo中我

TWaver可视化 2186

PPT里文字太多如何排版-一口气教你7种布局瞬间让PPT高大上起来

PPT里全是文字且很拥挤怎么办?本篇教你使用7种不同的排版让你的PPT瞬间变得高大上起来。

打造全国最全的AI Agent开发知识领域的博客 5022

java twaver_TWaver 2.0 发布,附在线demo 截图

SERVA Software announced TWaver 2.0 now available for production use. TWaver 2.0 delivers two new product branches, TWaver Web and TWaver GIS. With the solutions, developers can extend their OSS appli...

weixin_39660922的博客 153

nRF52832——大量数据传输时导致蓝牙断开连接,且无法被搜索到的解决方案(广播参数的设置、程序设计方法)

有时蓝牙通信单次发送数据量较大,且连续发送多次的时候,你会发现蓝牙就会出现异常,可能运行30min,40min,或者1h后,蓝牙就不能传输数据了,且无法被搜索到,用主机扫描蓝牙时可能会提示类似这样的DEBUG信息:bta_gattc_mark_bg_conn unable to find the bg connection mask for bd_addr=xx:xx:xx:xx:xx:xx。

数字世界 万物互联 2004

22h2版本的win10安装Docker Desktop时页面空白

摘要:Windows10 22H2系统重装Docker时出现安装界面卡死问题,通过管理员CMD执行静默安装命令解决。命令指定了WSL-2后端及多个自定义数据存储路径(安装目录、Hyper-V数据、Windows容器数据、WSL数据),安装需等待几分钟。最终验证安装成功。

猿小白的博客 658

layerui工具栏根据状态动态显示

  &lt;script type="text/html" id="toolbar"&gt;              &lt;a class="layui-btn layui-btn-xs" lay-event="detail" title="详情"&gt;详情&lt;/a&gt;          &lt;!-- 这里同样支持 laytpl 语法,如

gzkahjl的博客 4743

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1570

Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)

Twaver-HTML5基础学习(28)工具条(添加自定义按钮_自定义事件)

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

SAR图像去斑(Despeckling)研究的主流开源数据集

这些数据集专门用于训练监督学习去斑模型,提供了配对的含斑SAR图像和对应的无噪声参考图像(Ground Truth)。这些数据集主要用于目标检测/识别,但包含原始SAR图像,可用于。由于缺乏真实无噪声SAR图像,许多研究采用。

VectorShift的博客 128

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

认识TWaver

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

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

VB摄像头监控

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

twaver 一个java图形开发框架 mark一下

[url=http://www.servasoftware.com/twaver.php]http://www.servasoftware.com/twaver.php[/url] [url=http://www.flickr.com/photos/lich0079/4464284822/][img]http://farm5.static.flickr.com/4065/4464284822...

任香980101 240

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

下一篇: 【Struts1.2总结系列】validation.xml验证文件的配置
xulai_java
博客等级 码龄15年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值