【问题标题】:Transparent JLabels on a JLayeredPaneJLayeredPane 上的透明 JLabels
【发布时间】:2012-05-12 09:13:03
【问题描述】:

我正在尝试在重叠的 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) 之类的东西?

提前谢谢:)

【问题讨论】:

    标签: swing png jlabel bufferedimage jlayeredpane


    【解决方案1】:

    如果你想看透,你的标签不应该是不透明的,见 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.
    

    【讨论】:

    • 对,就是它! setOpaque() 是在测试期间放在这里的,因为 JLabels 第一次根本没有显示……我忘记了这条线……现在好多了。非常感谢:)。
    猜你喜欢
    • 2012-07-07
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    相关资源
    最近更新 更多