7

我刚开始使用 JavaFX 11,SwingFXUtils 似乎消失了(或重命名了?)

我试图手动下载它,但模块系统抱怨import sun.awt.image.IntegerComponentRaster;,我无法让它工作。

我需要将 Swing Icon 转换为 JavaFX 图像。

4

2 回答 2

12

自 Java 9 以来,SwingFXUtils已移至javafx.swing模块下的 package javafx.embed.swing.

请参阅托管在https://openjfx.io上的JavaFX 9 Javadoc和新的 JavaFX 11 Javadoc

如果您的示例有任何问题,请确保您添加了正确的 VM 选项。请参阅入门指南中的示例。

可能您需要添加以下内容:

--module-path <path-to>/javafx-sdk-11/lib --add-modules=javafx.controls,javafx.swing
于 2018-09-28T16:02:26.887 回答
1

如果您已将 javafx.swing 模块正确添加到构建路径中,SwingFXUtils 仍然存在(请参阅 José 的回答),但sun.awt.image.IntegerComponentRaster不再允许导入类似的内部类。

要转换你的图标,你可以试试这个:

Icon icon; // Your icon
BufferedImage image = (BufferedImage)((ImageIcon)icon).getImage();
WritableImage writable = SwingFXUtils.toFXImage(image, null);

这是否有效取决于您的图标是如何创建的,但值得一试。

于 2018-09-28T16:00:48.390 回答