【发布时间】: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