2012-05-12 14 views
0

JLayeredPaneに複数のPNG画像を重ねて表示しようとしています。ここでJLayeredPane上の透明なJLabels

は、画像を含むとのJLayeredPaneに追加するJLabelを生成するための現在のコードです:

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)なんかそんなものを設定しなければならないのでしょうか?事前に

感謝:)

答えて

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. 
+0

右参照、不透明すべきではない、それはそれでした! JLabelsが初めて表示されなかったので、setOpaque()はテスト中にここに置かれました...私はこの行を忘れていました...今はるかに良くなりました。どうもありがとうございました :) 。 – Undo

関連する問題