2011-01-07 4 views
8

Hy, ..Как установить прозрачный фон JDialog

как я могу установить фон прозрачным и «снять» closeoperation (отмечен красным цветом)? Я только хочу, чтобы показать карту :-)

alt text

Спасибо ..!

+2

Обратите внимание, что контейнеры верхнего уровня, такие как JDialog, JFrame и JApplet, не должны быть прозрачными. В статье Sun был взломан, чтобы обеспечить прозрачность и изогнутые окна (с использованием классов com.sun), но он перестает работать. Предполагается, что Java 7 повторно вводит (в J2SE) полупрозрачные/прозрачные TLC. –

+0

Я думаю, что это может помочь вам: http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/ –

ответ

9

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

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

+0

, если я напишу «setUndecorated», тогда он выдает исключение: «IllegalComponentStateException: диалоговое окно можно отобразить» –

+1

Argh, Сейчас я не в своей среде разработки. Я проверю и вернусь, когда смогу положить руки на правильный компьютер. – LudoMC

+1

До тех пор, пока я не смогу выполнить тест, вы должны попробовать JWindow (который по умолчанию не применяется). Возможно, вам также стоит взглянуть на функциональность SplashScreen Java6. – LudoMC

2

Я следил за инструкциями из статьи, и это работало финнали, и это было совсем не сложно. :) Теперь у меня есть мой полупрозрачный SplashImage ans О экране, который отображает изображение 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);

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

+1

Это может быть лучше, чем комментарий. Вы должны, безусловно, продвинуть исходную ссылку на статью, если она вам поможет. –

+0

Да, это скорее скорее комментарий, чем ответ. Я довольно новичок здесь, я не очень понял, как сайт организован, извините. :) Кстати, я преуспеваю, это полупрозрачность под окнами, но у меня нет AWTUtilities под Linux, поэтому я просто не могу этого сделать. –

11

Хотя нет никакой проблемы с прозрачностью JDrame UNDECORATED (myJFrame.setBackground (новый цвет (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)); 

также остается, но это мое частное, скромное предложение, что все setBackground вызова для окна наполнителей (например, JFrame, JDialog) следует проверять на UnsupportedOperationException и IllegalComponentStateException.

+0

Ты сэр только что сделал мой день :) –

+0

Я думаю, что лучше, если я получу исключение и исправлю его. – WVrock

+0

'getContentPane(). SetBackground' не требовалось в моем случае –

 Смежные вопросы

  • Нет связанных вопросов^_^