介绍JavaFX功能与Swing的关系
创始人
2024-04-17 10:31:07
0

JavaFX包含了许多强大的功能,它们都是Java SE不具备的,如图表Charting,动画,媒体播放,RSS/Atom等,于是程序员常常讨论如何在Java中调用JavaFX功能。笔者文章纯Java代码调用JavaFX功能和JavaFX和Java之间的互操作性对此作过专题讨论。在Stephen Chin的开源项目JFXtras***版本中, 提供了一个JavaFX的封装类,可以在Swing应用中显示JavaFX的图性元素(动画,图表等)。

这是个十分有用的功能,对广大的Java(Swing)开发人员来说是个好消息。JFXtras的源代码中包含了相关的演示程序(SceneToJComponentScene.fx和 SceneToJComponentTest.java)。我把这个程序修改了一下,以便说明问题。

  1. /*  
  2. *MyScene.fxhttp://www.javafxblogs.com  
  3. *@authorHenryZhang  
  4. */  
  5.  
  6. packageswingtest;  
  7.  
  8. importjavafx.scene.Scene;  
  9. importjavafx.scene.text.*;  
  10. importjavafx.scene.paint.*;  
  11. importjavafx.scene.shape.Rectangle;  
  12. importjavafx.animation.Timeline;  
  13. importjavafx.animation.KeyFrame;  
  14.  
  15. defw=500;  
  16. defh=400;  
  17.  
  18. publicclassMySceneextendsScene{  
  19. varxx=w/3;  
  20. varyy=h/2;  
  21. varrotate=0;  
  22. vartext="";  
  23. vartl=Timeline{  
  24. repeatCount:Timeline.INDEFINITE  
  25. keyFrames:[  
  26. KeyFrame{  
  27. time:70ms  
  28. action:function(){  
  29. text=JavaFXToSwingTest.tf.getText();  
  30. rotate=(rotate+5)mod360;  
  31. }  
  32. }  
  33. ]  
  34. }  
  35.  
  36. overridevarcontent=[  
  37. Rectangle{  
  38. width:w,height:h  
  39. fill:Color.BLUE  
  40. },  
  41. Text{  
  42. font:Font{  
  43. size:24  
  44. }  
  45. layoutX:bindxx  
  46. layoutY:bindyy  
  47. rotate:bindrotate  
  48. content:bindtext  
  49. fill:Color.YELLOW  
  50. }  
  51. ];  
  52.  
  53. init{tl.play();}  

1) 在上述程序中,我们用JavaFX的代码去轮询Java的变量值,实际中这会损失比较多的性能,所以我们可以从Java代码中主动把数据变化通知JavaFX。这需要一种从Java调用javafx的技巧,可以参见本人文章:用Java代码调用JavaFX功能。

2) 在Swing程序中调用JavaFX是可行的,那么应该怎样编译和运行这样的程序呢。其实,JavaFX功能也就是一些jar文件,因此和Java的结合方式还是比较简单的。编译的方法主要有两种,一种就是用JavaFX 的编译器javafxc来编译Java和JavaFX的代码。第二种就是用javafxc编译JavaFX代码,用javac编译java代码。运行程序的时候,我们可以选择javafx或java命令即可,可以参见本人文章:JavaFX技巧:纯Java代码调用JavaFX的例子的详细说明。

【编辑推荐】

  1. 介绍JavaFX功能与Swing的关系
  2. 浅谈Swing中lookandfeel源代码
  3. 概述Swing中的Timer对象
  4. 浅析Swing中actionPerformed()方法
  5. 详解所有的Swing核心组件

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...