0

我试图在重叠的 JLayeredPane 上显示几个 PNG 图像。

这是生成包含图像的 JLabel 并将其添加到 JLayeredPane 的当前代码:

BufferedImage im = ImageIO.read(new File(fname));
JLabel uLabel = createLabelForImage(im);
mapLayeredPane.add(uLabel, new Integer(zIndex++), 1);

和 createLabelForImage() 方法:

protected JLabel createLabelForImage(BufferedImage im) {
    JLabel label = new JLabel(new ImageIcon(im));
    label.setVerticalAlignment(JLabel.TOP);
    label.setHorizontalAlignment(JLabel.CENTER);
    label.setOpaque(true);
    label.setBounds(0, 0, im.getWidth(), im.getHeight());

    return label;
}

我得到的是对象正确重叠,但 PNG 图像的透明背景被一种白灰色替换。

ImageIcon 有问题吗?使用 JLayeredPane ?也许我必须设置诸如 label.setBakground(sort_of_transparency_code) 之类的东西?

提前致谢 :)

4

1 回答 1

2

如果您想看透,您的标签不应该是不透明的,请参阅 JComponent.setOpaque

 If true the component paints every pixel within its bounds. 
 Otherwise, the component may not paint some or all of its
 pixels, allowing the underlying pixels to show through.
于 2012-05-12T09:39:07.157 回答