2012-01-14 1 views
2

Я создал объект JxImageView и установил для него изображение, теперь у меня есть белый цвет в качестве фона, которого нет в исходном изображении. Я просто хочу удалить белый цвет из окна просмотра.Как сделать прозрачный цвет фона изображения, отображаемого через jxImageview

+0

Что такое JxImageView? Изменить: ах, [я вижу] (http://javadoc.geotoolkit.org/external/swingx/org/jdesktop/swingx/JXImageView.html). Позвольте мне добавить тег SwingX к вашему вопросу. –

+0

Что делать, если вы вызываете setOpaque (false) в объекте JxImageView? –

+0

setOpaque (false) не помогло. – Bijoy

ответ

4

После прочтения docs, я заключаю (поправьте меня, если я ошибаюсь), вы не можете изменить белый фон

В Застройщиком JxImageView, вы видите:

/** Creates a new instance of JXImageView */ 
public JXImageView() { 
     checkerPaint = ColorUtil.getCheckerPaint(Color.white, 
     new Color(250, 250, 250), 50); 
     setEditable(true); 
} 

и checkerPaint не может Доступен

+1

+1 хороший улов - это ошибка, которая нуждается в исправлении ;-) – kleopatra

+0

Да, вы правы. Спасибо :) – Bijoy

+1

ошибка: http://java.net/jira/browse/ SWINGX-1479 – kleopatra

4

Я не знаю JxImageView, но я не вижу, как это может изменить цвет фона изображения, потому что изображение не имеет цвета фона. Вероятно, это просто означает, что некоторые части изображения прозрачны, а белый цвет - цвет фона компонента, который отображает изображение: JxImageView. Вероятно, вы должны изменить цвет фона JxImageView на тот цвет, который вам подходит.

JxImageView также может быть прозрачным, и в этом случае вы увидите фон его родительского компонента.

Попробуйте загрузить изображение в редакторе изображений, чтобы убедиться, что изображение прозрачное.

+0

Я подтвердил, что фон изображения прозрачный. Также я изменил цвет фона компонента, но это также не сработало. – Bijoy

+2

Итак, мой ответ верный, но, к сожалению, ответ Аделя Бутроса также верен, и вы не сможете изменить фон JXImageView. Либо создайте свой собственный компонент, либо подкласс JXImageView и переопределите paintComponent, чтобы рисовать фон. Я бы отправил отчет об ошибках/эволюции в swingx, потому что я нахожу глупым неспособность установить фон такого компонента. –

+2

@ Bjjoy определенно ошибка: JXImagePanel _is-a_ JXPanel и, как таковая, должен уважать произвольного художника-иллюстратора (вместо того, чтобы полностью обходить супер). Пожалуйста, напишите о проблеме в Tracker проблемы SwingX, поэтому мы не забудем ее исправить в следующий выпуск :-) – kleopatra

3

JXImageView bug исправлено в текущем снимке (кстати, post-SwingX 1.6.3, на всякий случай, если вы пропустили release announcement :) Чтобы заменить фон мозаики по умолчанию, просто установите пользовательскую фоновую маску r:

JXImageView ipa = new JXImageView(); 
ipa.setBackgroundPainter(new MattePainter(Color.RED));