我将如何在JFrame上显示具有透明parst的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);
}
THX的帮助!真诚的罗伯托!
编辑: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
以匹配图像呢?将setShape(Shape shape)
让你使用任何形状从geom
包。我看到这是一个初始屏幕,并且可能未修饰,因此设置形状应该可以解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句