- 浏览: 165441 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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图纸
JavaFX Script被抛弃以后,很久不关心JavaFX了,偶然发现JavaFX已经发展到2.2,而且已经绑定到JDK7中,看来Oracle对它还是蛮重视的。
看到有人在论坛提问TWaver有没有JavaFX版本,于是去Oracle网站上逛了一下,发现可以将JavaFX集成进Swing程序中,真是福音啊,立马动手写了个Demo,集成起来还是很方便的。
运行效果
代码分析
窗体中间是个很典型的Network,上下各是一个JavaFX容器,上面容器中包含一个Slider,滑动时可以改变TWaver选中Node的RenderColor,下面的容器中包含一些Text,选中Network中的Node并拖动的时候在Text组件上显示Node的name和location。
在这个Demo里,程序架构还是Swing,JavaFX提供了一个名为JFXPanel的组件可以嵌入到Swing容器中,JFXPanel内可以放JavaFX的组件,需要注意,Swing和JavaFX的线程不同,官方的原文是:"JavaFX data should be accessed only on the JavaFX User thread","Swing data should be changed only on the EDT",所以如果要在Swing中修改JavaFX的数据,应该使用Platform#runLater包装,本例中,拖动Node时修改JavaFX的Text组件的相关代码:
network.getDataBox().addElementPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if("location".equals(evt.getPropertyName())){ Element element= (Element) evt.getSource(); final String name=element.getName(); final double x=element.getX(); final double y=element.getY(); Platform.runLater(new Runnable() { @Override public void run() { nameText.setText(name); locationText.setText("X:"+x+" Y:"+y); } }); } } });
同样,如果要在JavaFX中修改Swing数据,也要用SwingUtilities#invokeLater包装,本例中,滑动Slider修改选中Node的Render Color代码如下:
slider.valueProperty().addListener(new ChangeListener<Number>() { public void changed(ObservableValue<? extends Number> ov, Number old_val,final Number new_val) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { Iterator it=network.getSelectionModel().selection(); while (it.hasNext()){ Element element= (Element) it.next(); element.putRenderColor(new java.awt.Color(new_val.intValue())); } } }); } });
最后附上全部代码:
public class Test1 { static TNetwork network; static Text nameText; static Text locationText; static Slider slider; private static void initAndShowGUI() { initNetwork(); JFrame frame = new JFrame("TWaver With JavaFX"); frame.getContentPane().setLayout(new BorderLayout()); frame.setSize(500, 300); frame.setVisible(true); frame.getContentPane().add(network); final JFXPanel controlFXPanel = new JFXPanel(); frame.add(controlFXPanel,BorderLayout.NORTH); final JFXPanel statusFXPanel = new JFXPanel(); frame.add(statusFXPanel,BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); network.getDataBox().addElementPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { if("location".equals(evt.getPropertyName())){ Element element= (Element) evt.getSource(); final String name=element.getName(); final double x=element.getX(); final double y=element.getY(); Platform.runLater(new Runnable() { @Override public void run() { nameText.setText(name); locationText.setText("X:"+x+" Y:"+y); } }); } } }); Platform.runLater(new Runnable() { @Override public void run() { initFX(statusFXPanel,controlFXPanel); } }); } private static void initNetwork(){ network=new TNetwork(); twaver.Node node1=new Node(); node1.setName("node1"); twaver.Node node2=new Node(); node2.setLocation(200,100); node2.setName("node2"); Link link=new Link(node1,node2); network.getDataBox().addElement(node1); network.getDataBox().addElement(node2); network.getDataBox().addElement(link); } private static void initFX(JFXPanel statusFXPanel,JFXPanel controlFXPanel) { Scene scene = createStatusScene(); statusFXPanel.setScene(scene); statusFXPanel.validate(); Scene controlScene=createControlScene(); controlFXPanel.setScene(controlScene); controlFXPanel.validate(); } private static Scene createControlScene(){ Group root = new Group(); Scene scene = new Scene(root, Color.ALICEBLUE); HBox hbox=new HBox(); slider =new Slider(0,16777215,0); slider.setPrefHeight(30); slider.setPrefWidth(300); slider.valueProperty().addListener(new ChangeListener<Number>() { public void changed(ObservableValue<? extends Number> ov, Number old_val, final Number new_val) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { Iterator it = network.getSelectionModel().selection(); while (it.hasNext()) { Element element = (Element) it.next(); element.putRenderColor(new java.awt.Color(new_val.intValue())); } } }); } }); Label label=new Label("颜色:"); label.setPrefHeight(30); hbox.getChildren().add(label); hbox.getChildren().add(slider); root.getChildren().add(hbox); return scene; } private static Scene createStatusScene() { Group root = new Group(); Scene scene = new Scene(root, Color.ALICEBLUE); VBox vbox=new VBox(); vbox.setPrefWidth(300); vbox.setPrefHeight(20); HBox hbox=new HBox(); nameText=new Text(); hbox.getChildren().add(new Label(" Name:")); hbox.getChildren().add(nameText); hbox.getChildren().add(new Text(" ")); locationText=new Text(); hbox.getChildren().add(new Label("Location:")); hbox.getChildren().add(locationText); vbox.getChildren().add(hbox); root.getChildren().add(vbox); return (scene); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { initAndShowGUI(); } }); } }
发表评论
-
数字图像处理技术在TWaver可视化中的应用
2015-04-16 14:30 712数字图像处理(Digital Image Processin ... -
TWaver HTML5之树形布局
2015-03-11 10:53 1419转眼间春节假期已经过完,作为一个职业的程序猿,不知道大家有没 ... -
TWaver推智能手表挑战华为苹果
2015-03-04 10:35 6082015年的春节刚过,苹果、华为、三星就紧锣密鼓的发布了各自 ... -
TWaver矢量小试——Android演进路线图
2015-02-02 11:56 1226还有半个多月就到春节了,年底相信很多公司都会进行年度总结以及 ... -
用TWaver加载大型游戏场景一例
2015-01-06 13:52 727游戏中经常会出现一些大型的户外场景,例如一个小镇、一座古城等 ... -
22万个木箱!TWaver 3D极限压榨
2014-12-29 11:31 895打开个门户网站都千呼万唤,我们还能期待网页上的3D技术会有 ... -
巧用TWaver 3D 矢量图形功能
2014-10-29 11:14 589的确,提起TWaver,大家想到的首先是“电信拓扑图组件”。 ... -
TWaver GIS在电信中的使用
2014-10-09 14:56 543GIS作为信息系统的重要组成部分,在电信行业中的应用由来已久。 ... -
如何创建环型、树型双层布局
2014-09-19 10:58 827TWaver的Demo中有常用的环型布局和树型布局,但是当网 ... -
如何创建发光的环路
2014-09-16 13:44 790先看看发光链路的运行效果:在这个Demo中主要包含三个技术 ... -
Autolayout性能优化
2014-09-03 11:05 981客户的需求就是我们进步的动力。最近有客户提出大数据量Top ... -
DNA分子结构3D模型
2014-08-21 15:16 881生物信息资源更新越来 ... -
TWaver版3D化学元素周期表
2014-07-14 10:17 1720很早就有人做3D网页版的化学元素周期表了,酷炫效果和新鲜技巧 ... -
在MONO Design中使用Flex3D
2014-07-08 10:04 673在项目开发组的努力下,HTML5 3D 的开发包变得越来越优 ... -
TWaver 3D技术在油田行业的应用
2014-05-26 15:29 668油田信息化是是数字油 ... -
用TWaver实现组合的Chart
2013-01-21 12:14 1419TWaver组件中提供了一些通用的Chart,比如Line ... -
TWaver Java内存占用测试
2012-12-25 13:50 851TWaver Java的性能大家有 ... -
JTree实现文件树
2012-11-05 10:57 640这篇文章介绍的内容其实跟TWaver的组件没有任何关系,但是个 ... -
如何让HTML5的表格支持后台排序与分页
2012-08-21 17:41 1374TWaver HTML5发布已有一段时间,使用的客户也是逐渐增 ... -
自定义Background
2012-08-17 12:08 947TWaver提供了ImageBackground来为TNetw ...
相关推荐
“twaver.js使用示例”这一标题表明了我们即将探讨的是一个关于twaver.js的实践应用案例。Twaver.js是一款强大的图形化建模和可视化库,主要用于创建复杂的网络拓扑图、流程图、组织结构图等。这个标题暗示我们将...
"TWaver的3d图形组件库,小demo" 提示我们这是一个基于TWaver库的3D图形展示实例。TWaver是一个专业级的图表和数据可视化工具,它提供了HTML5版本的3D图形组件,允许开发者在Web应用中创建交互式的三维图形。 ...
Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织结构等场景。5.9.0是该库的一个特定版本,可能包含了新功能、性能优化或错误修复。 描述简单明了,"twaver-html5-5.9.0-api"直接...
【标题】"TWaver-java-4.1最新 官网试用版jar包及Demo" 涉及的核心知识点是TWaver,一个基于Java的图形可视化库,主要用于数据的图表展示和交互。这个版本是4.1,是官方提供的试用版,包含jar包和演示示例。 【描述...
此外,TWaver Flex还预定义了丰富的业务对象,如告警(`twaver.IAlarm`)和告警容器(`twaver.AlarmBox`),图层(`twaver.ILayer`)和图层管理容器(`twaver.LayerBox`),以及拓扑网元(`twaver.IElement`)和拓扑...
TWaver是一个强大的可视化框架,其核心特性是支持复杂的图形和网络图表的绘制,尤其适合在Web上创建交互式的机房、网络设备、服务器架构等展示。 一、TWaver概述 TWaver是一个高效且灵活的JavaScript库,专门用于...
Twaver学习案例的例子
【标题】"TWaver-java-4.1" 是一个针对Java平台的TWaver最新开发包,旨在帮助开发者创建更加生动且具有吸引力的用户界面。TWaver是一个强大的数据可视化工具,它提供了丰富的图表类型和交互功能,让数据展示更加直观...
### Twaver 3.7性能测试报告分析 #### 概述 Twaver是一款由Serva Software开发的强大软件工具,主要用于支持复杂网络环境中的数据管理和处理。本次报告主要针对Twaver Java版本(Twaver Java)在不同节点配置及连接...
【标题】"Twaver Web实例源码"是一个关于使用Twaver与ExtJS结合的Web应用程序开发的学习资源。Twaver是一款强大的图形化建模和可视化工具,常用于数据可视化、网络拓扑图、流程图等场景。ExtJS则是一个流行的...
【基于TWaver实现的3D机房Demo】 在IT行业中,3D可视化技术正在逐步渗透到各个领域,尤其是在数据中心管理方面。TWaver是一款强大的WebGL3D框架,它为开发者提供了一个高效、灵活的工具,用于创建交互式的3D应用...
根据给定的文件信息,我们可以总结出以下有关TWaver的关键知识点: ### TWaver概述 - **TWaver**是由赛瓦软件开发的一款图形界面组件解决方案,主要用于数据的图形化展示,尤其是在电信行业拥有广泛的应用。 - **...
【描述】提到"支持各种常见类型的图形",意味着twaver具备绘制不同形状和符号的能力,包括但不限于节点、链路、多边形、圆形、矩形、线段等。这些图形可以代表服务器、路由器、交换机、传感器等硬件设备,也可以代表...
**标题:“twaver-java-3.7”** **描述:“twaver-java-3.7 文档”** **标签:“twaver java 3.7”** 本文将深入探讨Twaver Java 3.7版本的相关知识,这是一个强大的数据可视化库,特别适用于Java开发人员。...
TWaver HTML5 Developer Guide是关于TWaver HTML5组件套件的官方开发文档,由Serva Software发布。TWaver HTML5是一套基于HTML5的图形组件库,它提供了一整套用于构建网络拓扑图、树形结构、表格和图表等功能丰富的...
【标题】"twaver-flex-3.6.5 官方demo" 提供的是一个基于Flex技术的Twaver图形库的演示版本。Twaver是一款强大的数据可视化和建模工具,广泛应用于网络、系统和业务流程的图形化表示。在3.6.5这个版本中,官方提供了...
【标题】"TWaver-java-4.1试用版jar包" 涉及的核心知识点是TWaver,这是一个专门用于数据可视化和图表绘制的Java库。TWaver提供了一个全面的解决方案,帮助开发者创建复杂的图表、仪表盘以及交互式的数据可视化应用...
《TWaver Java 3.7 开发者指南》是一份详尽的技术文档,旨在为开发者提供使用TWaver Java 3.7版本进行网络、图表、数据管理和用户界面设计的全面指导。TWaver Java是一个功能丰富的可视化组件库,适用于构建复杂的...
### TWaver for Flex 开发手册知识点总结 #### 一、TWaver for Flex 概述 TWaver for Flex 是一款由 Serva Software 开发的高级图形组件库,它为 Flex 应用程序提供了一系列丰富的图形控件和服务。这些控件允许...