Java - фон JLabel не полностью прозрачен?

У меня есть JLabel со значком коробки. Я создаю изображение иконки в фотошопе. Это изображение png-24 с полностью стертым фоном.

Но при перемещении поверх темного фона вы можете увидеть, что фон не полностью прозрачен:

изображение


РЕДАКТИРОВАТЬ № 2:

Изображение прозрачное. Я даже просмотрел учебники по фотошопу, чтобы убедиться, что я правильно создаю прозрачное изображение. Проблема, похоже, связана с Java (и JLabels).

Как это исправить?


person Gabe Riddle    schedule 18.11.2010    source источник
comment
если изображение IS прозрачно, то почему оно не отображается как прозрачное на странице html?   -  person pstanton    schedule 19.11.2010


Ответы (2)


Я проверил ваше изображение, оно не прозрачное. наверняка причина в этом.

<html>
<body style="background-color:#99cccc;">
    <table>
    <tr>
        <th>your one isn't transparent</th>
        <th>this one is</th></tr>
    <tr>
        <td><img src="http://i.stack.imgur.com/BvYxM.png" style="border:5px solid green;"/></td>
        <td><img src="http://www.axdn.com/redist/axpssp_logo.png" style="border:5px solid green;"/></td></tr>
    </table>
</body>
</html>

@Gabe: вставьте это в html-файл и загрузите в браузере. Это явно не проблема с чем-либо, связанным с Java.

вот java-доказательство того, что ваше изображение не прозрачно И что правильный прозрачный PNG работает нормально.

public static void main(String[] args) throws Throwable
{
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    Container cp = frame.getContentPane();
    cp.setBackground(Color.RED);
    cp.setLayout(new FlowLayout());

    cp.add(new JLabel(new ImageIcon(new URL("http://i.stack.imgur.com/BvYxM.png"))));
    cp.add(new JLabel(new ImageIcon(new URL("http://www.axdn.com/redist/axpssp_logo.png"))));

    frame.pack();
    frame.setVisible(true);
}
person pstanton    schedule 18.11.2010
comment
Как я могу исправить это тогда? Стереть весь фон в фотошопе? Похоже, Java обрабатывает изображение по-другому. - person Gabe Riddle; 18.11.2010
comment
Используйте File/Save for Web, чтобы сохранить PNG с прозрачностью. - person msell; 18.11.2010
comment
@Gabe Кажется, что Java обрабатывает изображение по-другому - вы упускаете суть. изображение не прозрачное. ничего общего с джавой. вы должны читать справку по фотошопу или использовать другую программу. см. редактирование. - person pstanton; 19.11.2010
comment
я уверен, что он сделал это как прозрачность в Photoshop. как я тоже делал. - person gumuruh; 09.08.2011

Вы можете попробовать формат GIF и соответственно установить альфа-значение. Я не мог видеть ваше изображение прямо сейчас. Что ж, убедитесь, что изображение, которое вы создаете, прозрачно. Иначе бы вы не получили то, что вам нужно.

пример руководства по созданию прозрачного изображения: ССЫЛКА

person Mohamed Saligh    schedule 18.11.2010
comment
Это тоже не сработало. Я знаю, что это должен быть PNG. (Я читал раньше, что прозрачность Java работает только с PNG.) - person Gabe Riddle; 18.11.2010
comment
эй .... я думаю, что столкнулся с тем же самым здесь. как только мой png сначала показывался нормально, но когда я перекрашиваю его, он также дает мне черный фон .... Итак, как это исправить? :( - person gumuruh; 09.08.2011