我如何将javax.swing.ImageIcon绘制为JavaFX .fxml呈现的用户界面?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何将javax.swing.ImageIcon绘制为JavaFX .fxml呈现的用户界面?相关的知识,希望对你有一定的参考价值。
我正在开发使用传统资源提供者的JavaFX富客户端。这样提供的资源之一是javax.swing.ImageIcon
。我必须在从JavaFX .fxml文件呈现的详细信息对话框中绘制该图标。
[我发现工作的方法是使用ImageIcon
中的java.awt.image.BufferedImage
使用ImageIcon.paintIcon()
方法将java.awt.Graphics
绘制为BufferedImage.createGraphics()
。从该BufferedImage
中,javafx.embed.swing.SwingFXUtils.toFXImage()
给出一个javafx.scene.image.WritableImage
,可以将其放置在.fxml的ImageView
中。
这是转换方法的代码,基于此处在StackOverflow中查看的其他一些解决方案:
private javafx.scene.image.Image atonIcon2ImageConverter(ImageIcon icon)
BufferedImage bi = new BufferedImage(
icon.getIconWidth(),
icon.getIconHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g = bi.createGraphics();
// paint the Icon to the BufferedImage.
icon.paintIcon(null, g, 0, 0);
g.dispose();
return SwingFXUtils.toFXImage(bi.getSubimage(0, 1, bi.getWidth(), bi.getHeight()-1), null);
尽管此解决方案有效,但在我看来却相当复杂,我希望就如何使其更简单直接获得一些专家意见。使用JavaFX作为Swing的后继者,我很可能有一种更简单的方法将Swing ImageIcon
放置在JavaFX .fxml文件中(给出了ImageIcon
,但可以挑战ImageView
)。 >
编辑:我的解决方案。
在玩弄并混合了不同的评论和解决方案后,这就是我实现我的真实系统实现的结果。绝对是一个非常特殊的环境(ImageIcon
内部具有Swing ToolkitImage
),因此它可能不适用于许多环境:
private javafx.scene.image.Image atonIcon2ImageConverter(ImageIcon icon)
BufferedImage bi = ((sun.awt.image.ToolkitImage)imageIcon.getImage()).getBufferedImage();
return SwingFXUtils.toFXImage(bi, null);
我正在开发使用遗留资源提供者的JavaFX富客户端。这样提供的资源之一是javax.swing.ImageIcon。我必须在从...
您是否尝试过:
以上是关于我如何将javax.swing.ImageIcon绘制为JavaFX .fxml呈现的用户界面?的主要内容,如果未能解决你的问题,请参考以下文章
matlab改变GUI和figure左上角图标的方法,并生成exe文件
我无法将 javascript 文件应用到 Wordpress。我如何将脚本排入队列?