栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Graphics2D和GraphicsContext之间的互操作性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Graphics2D和GraphicsContext之间的互操作性

awt
Graphics2D和JavaFX
GraphicsContext之间没有内置的互操作性,它们是完全独立的API,用于完全独立的UI工具包。

建议

是否需要修改或插入现有的Swing应用程序?

是=>编码到java.awt.Graphics接口,并(当嵌入JavaFX中时)将awt渲染的图形包装在SwingNode中,或使用如下定义的桥。

否=>直接将代码传递到JavaFX图形上下文或JavaFX场景图。

在JavaFX中显示Swing(和AWT)

要在JavaFX中显示Swing,可以使用SwingNode,它在Java8早期访问版本中可用。

在Swing中显示JavaFX

要在Swing中显示JavaFX,可以使用JFXPanel。将您的JavaFX画布放入JFXPanel。有关更多信息,请参见JavaFX
for Swing开发人员教程。

桥接AWT和JavaFX图形

您可以实现桥接模式以开发抽象接口,然后委托给已配置的Graphics实现。我链接的Wiki页面提供了一个很好的示例,说明了如何完成此操作。我认为,这样的桥梁的实现将非常简单。例如,您可以实现java.awt.Graphics并将api调用映射到JavaFX
GraphicsContext操作。桥接完成后,您只需编写代码到桥接接口,然后桥接(根据您选择的实现)将api调用适当地转换为awt或javafx方法的线程安全调用。


更新:2014年5月20日

大卫·吉尔伯特(JFreeChart创造者)创造了一座桥梁。该项目是FXGraphics2D:

FXGraphics2D是针对JavaFX Canvas的Graphics2D API的免费实现。该代码是为使用Orson
Charts和
JFreeChart而开发的 ,但是通常对于使用Graphics2D
API的任何代码都是有用的。

FXGraphics2D需要JDK 1.8.0或更高版本,并且已根据(三个条款)BSD样式许可的条款获得许可。

FXGraphics2D主页和github位置。


穿线建议

如果混合使用JavaFX和Swing代码,请小心如何管理线程。这两个工具箱都是单线程的,并且两个工具箱都在各自的线程上运行它们的处理,因此JavaFX代码必须在JavaFX线程上运行,而Swing代码必须在Swing线程上运行。

考虑一下JavaFX SceneGraph

JavaFX包含一个能够渲染2D形状的场景图。考虑使用场景图代替直接绘制的画布。

未来的可能性

JavaFX的未来版本可能会包含OpenGLNode之类的内容,从而使您可以直接渲染到OpenGL缓冲区。用于在这样的节点上绘图的API可能与JavaFX canvas
API显着不同(例如,它将使用jogl之类的东西)。

有关链接的示例文章的注释

您在问题中链接的文章与JavaFX 1.x有关。通常,完全不考虑与JavaFX
1.x相关的所有旧文章,因为它已经完全过时了,此类文章中的任何信息都可能使您感到极大的困惑。

与JavaFX 2+相关的文章是相关的,它们的最佳来源是Oracle JavaFX2官方文档。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453666.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号