【问题标题】:How to create loading animation from a transparent GIF in Java如何在 Java 中从透明 GIF 创建加载动画
【发布时间】:2012-08-26 17:14:55
【问题描述】:

我有一个加载标志 gif - 动画和透明背景。 如何在 Java 中使用它 - 显示它的动画并使其背景透明?

我使用此代码将其加载为splashscreen

我正在用ajaxload创建gif透明动画

【问题讨论】:

  • 你到现在都做了什么,SSCCE
  • 我什么都没做,所以我删除了我的代码。一般来说 - 如果在 Jlabel 上,我尝试加载 - 显示动画,但背景不透明。在 jpanel 上使用不透明度时 - 一切都变得透明。所以 - 不走运:-(
  • 我想这会解决你的问题java.sun.com/developer/technicalArticles/GUI/…
  • 我更新了我的问题。 Jonathan.cruz - 我试过这个并没有帮助我。可能是 gif 的渲染什么的。

标签: java animation gif splash-screen


【解决方案1】:

你的意思是,也许是……

最简单的方法是从ImageIconJLabel 开始

ImageIcon animatedGif = new ImageIcon(...); // Path/URL to your gif
JLabel splashLabel = new JLabel(animatedGif);

// Add to your splash screen...

完成基本设置后,您可能希望不装饰框架(或仅使用 JWindow)

myJFrame.setUndecorated(true);

哦,当然,如果你想要一些真正的东西,你可以使用一个透明的窗口......

【讨论】:

  • 我再次尝试了您的解决方案(JFrame 和 JWindow) - 我看到了预期的动画 gif,但是 - 它不透明 - 它是浅灰色的不透明背景 :-( 还有其他想法吗?
  • 这里有一些小技巧,首先,确保实际容器是透明的(这包括窗口的内容窗格)。阅读How to Create Translucent and Shaped Windows
  • AWTUtilities.setWindowOpaque(myJFrame, false) 成功了!非常感谢!!
【解决方案2】:

感谢MadProgramer 这是一个工作代码:

    ImageIcon icon = new ImageIcon("images/ajax-loader.gif");
    JLabel label=new JLabel(icon);
    JWindow myJFrame=new JWindow();
    myJFrame.setLayout(new BorderLayout());
    myJFrame.add(label,BorderLayout.CENTER);
    myJFrame.setLocationRelativeTo(null);
    myJFrame.setOpacity(0.5f);
    myJFrame.setAlwaysOnTop(true);
    label.setOpaque(false);
    AWTUtilities.setWindowOpaque(myJFrame, false);
    myJFrame.pack();
    myJFrame.setVisible(true);

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 2011-07-18
    • 2015-12-21
    • 2016-08-09
    • 2017-09-30
    • 2021-10-24
    • 2014-06-10
    • 1970-01-01
    • 2014-09-07
    相关资源
    最近更新 更多