Wie transparente hintergrund von JDialog
Hy,..
wie kann ich den hintergrund transparent " und "entfernen" die closeoperation (rot markiert) ?
Ich möchte nur zeigen Sie die Karte 🙂
Dank..!
- Beachten Sie, dass top-level-Container wie JDialog, JFrame und JApplet nicht beabsichtigt waren, um transparent zu sein. Es war ein hack erwähnt eine Sun-Artikel zu ermöglichen, Transparenz und Gebogenen Fenstern (mit com.sun-Klassen), aber es funktioniert nicht mehr. Java 7 soll wieder (in der J2SE) lichtdurchlässig/transparent TLCs.
- Ich denke das kann dir helfen: java.sun.com/developer/technicalArticles/GUI/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
yourDialog.setUndecorated(true)
sollte den trick tun für die Titelleiste.Dafür, dass der Rahmen transparent ist. Sie haben für die Arbeit auf dem root-panel mit
yourDialog.getRootPane().setOpaque(false)
drauf.setBackground
, wie in @Tomek ' s Antwort, ist auch verpflichtet, für Sie zu arbeiten.Obwohl es kein problem mit SCHMUCKLOSEN JFrame Transparenz (myJFrame.setBackground (new Color (0,0,0,0)); ist hübsch genug), das gleiche mit JDialog funktioniert nicht.
Entdeckte ich jedoch die folgende Sequenz arbeitet perfekt für den JDialog:
Einem auch bleiben, aber es ist mein EIGENES, bescheidenen Vorschlag, dass alle setBackground Aufruf für Fenster-Extender (z.B. JFrame, JDialog) sollte versucht werden, gegen UnsupportedOperationException und IllegalComponentStateException.
getContentPane().setBackground
war es nicht erforderlich, in meinem FallFolgte ich den Anweisungen aus dem Artikel und es funktionierte finnaly UND es war nicht schwer. 🙂
Ich habe jetzt meine durchscheinend SplashImage ans info-Bildschirm zeigt ein PNG-Bild und seine (komplexen) Transparenz. Einfach nur genial.
Beachten Sie, dass die Methode zu gehen, wird sich ein wenig ändern bit in JDK 7.
Nur den Unterschied zwischen keywords.
http://download.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html#6u10
Es wäre schön gewesen, wenn die
trick gearbeitet, aber es hat nicht zu mir. Vielleicht habe ich etwas falsch gemacht.
Ich auch den Hinweis: es ist wichtig, über setContentPane(Komponente); anstatt getContentPane.add(Komponente);
Ich bin froh, dass es nun funktioniert ! 🙂