【问题标题】:Why does my javafx imageview distort the way my gif is played为什么我的 javafx imageview 会扭曲我的 gif 播放方式
【发布时间】:2019-12-03 19:26:57
【问题描述】:

我正在尝试使用 gif 作为我的 javafx 侧边栏的背景,该 gif 显示和播放但似乎只重复前几帧,即使它有很多。

我尝试过通过 fxml 和代码设置 imageview,两者都是一样的。

这是任何想要复制 https://pastebin.com/SUV8Lan2 的人的 fxml,这是 https://www.sendspace.com/file/1hpxs5 的 gif 这是我配置图像视图的方式:

<ImageView fx:id="backgroundFlow" fitHeight="580.0" fitWidth="250.0" pickOnBounds="true" smooth="false">
     <image>
        <Image url="@../gif/flow.gif" />
     </image>
</ImageView>

我希望 gif 像这样 https://gyazo.com/4a2cb29f5bf95ae45c7e4c3006638bac 完全显示,而不是我得到这个 https://gyazo.com/8db0207787744a4c40266ae1928d34f9

【问题讨论】:

  • 我可以在 JavaFX 11 和 12 中重现这一点。

标签: java javafx gif


【解决方案1】:

这似乎是 JavaFX 中的一个错误。图像在 Swing 中正确显示,因此作为一种解决方法,我将使用 SwingNode:

SwingNode imageNode = new SwingNode();

URL url = new URL(urlSpec);
EventQueue.invokeAndWait(() -> {
    ImageIcon icon = new ImageIcon(url);
    JLabel imageLabel = new JLabel(icon);
    icon.setImageObserver(imageLabel);
    imageNode.setContent(imageLabel);
});

EventQueue.invokeAndWait 是必需的,因为 Swing 对象的线程要求。 (JavaFX 具有相同的要求;两者都必须在专用线程中执行。The SwingNode.setContent method is a rare exception.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2020-09-29
    • 1970-01-01
    • 2021-11-14
    • 2022-10-13
    相关资源
    最近更新 更多