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 に答える