Hy,..
how can i set the background transparent and "remove" the closeoperation (marked red) ? I only want to show the card :-)
Thanks..!
yourDialog.setUndecorated(true)
should do the trick for the title bar.
For having the Frame transparent. You'll have to work on the root panel with yourDialog.getRootPane().setOpaque(false)
on it.
Although there is no problem with UNDECORATED JFrame transparency (myJFrame.setBackground (new Color (0,0,0,0)); is pretty enough), the same with JDialog is not working.
I discovered, however, the following sequence works perfect for JDialog:
myJDialog.getRootPane ().setOpaque (false);
myJDialog.getContentPane ().setBackground (new Color (0, 0, 0, 0));
myJDialog.setBackground (new Color (0, 0, 0, 0));
A also remain, but it is my PRIVATE, humble suggestion, that all setBackground call for Window extenders (e.g. JFrame, JDialog) should be tried against UnsupportedOperationException and IllegalComponentStateException.
I followed the instructions from the article and it worked finnaly AND it wasn't difficult at all. :) I now have my translucent SplashImage ans About screen which displays a PNG image and respect its (complex) transparency. Just awesome. Note that the method to proceed will change a little bit in JDK 7.
Just notice the difference between keywords. http://download.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#6u10
It would have been nice if the
yourDialog.setUndecorated(true);
yourDialog.getRootPane().setOpaque(false);
trick worked but it didn't to me. Maybe I did something wrong.
I also note it is important to use setContentPane(Component); instead of getContentPane.add(Component);
I'm happy it works now ! :)
来源:https://stackoverflow.com/questions/4631021/how-to-set-transparent-background-of-jdialog