2012-05-12 14 views
0

Я пытаюсь отобразить несколько изображений PNG на JLayeredPane с перекрытием.Прозрачные JLabels на JLayeredPane

Вот текущий код для генерации 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) или что-то в этом роде?

Заранее спасибо :)

ответ

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

Право, это было его! SetOpaque() был поставлен здесь во время тестов, потому что JLabels вообще не отображался в первый раз ... Я забыл об этой строке ... теперь намного лучше. Большое спасибо :) . – Undo