【问题标题】:How to display a PNG properly on JFrame如何在 JFrame 上正确显示 PNG
【发布时间】:2014-02-17 08:14:38
【问题描述】:

我将如何在 JFrame 上显示带有透明部分的 png。
我目前有这个代码,一切都很好,但它显示透明部分灰色!

private static void createAndShowSplashScreen() throws Exception {
    Image image = ImageIO.read(TCPServer.class
            .getResource("images/splash.png"));
    BufferedImage img = (BufferedImage) image;

    frame = new JFrame("Splash");
    frame.setUndecorated(true);
    frame.add(new JLabel(new ImageIcon(image)) {
        {
            setOpaque(false);
        }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(img.getWidth(), img.getHeight()));
    frame.setBounds((int) (java.awt.Toolkit.getDefaultToolkit()
            .getScreenSize().getWidth() / 2 - img.getWidth() / 2),
            (int) (java.awt.Toolkit.getDefaultToolkit().getScreenSize()
                    .getHeight() / 2 - img.getHeight() / 2),
            img.getWidth(), img.getHeight());
    frame.setOpacity(0f);
    frame.setMinimumSize(frame.getPreferredSize());
    frame.setVisible(true);
}

感谢您的帮助! 真诚的罗伯托!

编辑: IMG

问题已解决:

Image image = ImageIO.read(TCPServer.class
            .getResource("images/splash.png"));
    BufferedImage img = (BufferedImage) image;

    frame = new JFrame("Splash");
    frame.setUndecorated(true);
    frame.add(new JLabel(new ImageIcon(image)) {
        {
            setOpaque(false);
        }
    });
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setPreferredSize(new Dimension(img.getWidth(), img.getHeight()));
    frame.setBounds((int) (java.awt.Toolkit.getDefaultToolkit()
            .getScreenSize().getWidth() / 2 - img.getWidth() / 2),
            (int) (java.awt.Toolkit.getDefaultToolkit().getScreenSize()
                    .getHeight() / 2 - img.getHeight() / 2),
            img.getWidth(), img.getHeight());
    RoundRectangle2D r = new RoundRectangle2D.Double(0, 0, img.getWidth(), img.getHeight(), 25, 25);
    frame.setShape(r);
    frame.setOpacity(0f);
    frame.setMinimumSize(frame.getPreferredSize());
    frame.setVisible(true);

【问题讨论】:

  • 将图像上传到我们可以看到的站点。顺便说一句 - 尝试将 JFrame 背景颜色设置为 Color.YELLOW。有什么变化吗?
  • 这个frame.setOpacity(0f); 对你的案子没有任何帮助。
  • 它下面的thead中有一个for循环,使其淡入
  • 图片正在编辑中显示链接
  • 什么..嗯?当我说“链接到图像”时,我并不是指“链接到出现在您的 IDE 上的图像的屏幕截图”。我的意思是'链接到图像透明'

标签: java swing png transparency


【解决方案1】:

我不知道这是否适合您的特殊情况,但是如何更改JFrame 的形状以匹配图像? setShape(Shape shape) 允许您使用 geom 包中的任何形状。我看到这是一个启动画面,可能没有装饰,所以设置形状应该可以解决问题。

【讨论】:

  • 给我 10 分钟试试
  • 良好的横向思维。 :)
猜你喜欢
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多