Как установить прозрачный фон JDialog - PullRequest
9 голосов
/ 08 января 2011

Hy, ..

как я могу установить прозрачный фон и "удалить" операцию закрытия (отмечена красным)?Я только хочу показать карту :-)

alt text

Спасибо ..!

Ответы [ 3 ]

15 голосов
/ 15 марта 2012

Хотя с прозрачностью UNDECORATED JFrame нет проблем (myJFrame.setBackground (new Color (0,0,0,0)); вполне достаточно), то же самое с JDialog не работает.

Я обнаружил, однако, следующая последовательность прекрасно работает для JDialog:

myJDialog.getRootPane ().setOpaque (false);
myJDialog.getContentPane ().setBackground (new Color (0, 0, 0, 0));
myJDialog.setBackground (new Color (0, 0, 0, 0));

A также остается, но это мое ЧАСТНОЕ, скромное предположение, что все вызовы setBackground для расширителей окон (например, JFrame, JDialog) следует пытаться использовать против UnsupportedOperationException и IllegalComponentStateException.

11 голосов
/ 08 января 2011

yourDialog.setUndecorated(true) должен сделать трюк для строки заголовка.

Для того, чтобы рамка была прозрачной. Вам придется работать с корневой панелью с yourDialog.getRootPane().setOpaque(false) на ней.

2 голосов
/ 22 июня 2011

Я следовал инструкциям из статьи, и это работало в конце концов И это было совсем не сложно. :) Теперь у меня есть полупрозрачный экран SplashImage и About, который отображает изображение в формате PNG и учитывает его (сложную) прозрачность. Просто потрясающе. Обратите внимание, что метод продолжения немного изменится в JDK 7.

Просто обратите внимание на разницу между ключевыми словами. http://download.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#6u10

Было бы неплохо, если бы

yourDialog.setUndecorated(true);
yourDialog.getRootPane().setOpaque(false);

трюк сработал, но это не для меня. Может быть, я сделал что-то не так.

Я также отмечаю, что важно использовать setContentPane (Component); вместо getContentPane.add (Component);

Я счастлив, что теперь это работает! :)

...