JPanel Hintergrund transparent setzen?

Hackepeter

Aktives Mitglied
Servus,

suche nun schon eine ganze Weile nach einer vernünftigen Lösung, wie man den Hintergrund eines JPanels transparent rendern kann. Am besten wärs, wenn einfach nur die paintComponent-Methode überschrieben wird.

Ich finde leider immer nur die Aussage, dass man ein LayeredPane verwenden soll, weils mit dem leichter geht. Ich habe auch gesehen, dass man ein GlassPane verwenden kann, allerdings komme ich damit überhaupt nicht klar.

Ich arbeite mit dieser Vorlage:

Java:
private JPanel panel = new JPanel(){
	    protected void paintComponent(Graphics g)
	    {
	        g.setColor( getBackground() );
	        g.fillRect(0, 0, getWidth(), getHeight());
	        super.paintComponent(g);
	    }
	};

Ich habe versucht, bei setColor null zu übergeben, aber das macht ja eigentlich auch keinen Sinn. Methoden um das Ganze transparent zu machen, habe ich keine gefunden.

Hat jemand eine Idee?
 

Hackepeter

Aktives Mitglied
setOpaque habe ich schon auf false gesetzt, allerdings wird der Hintergrund dennoch angezeigt.
Und was bewirkt das hier?
Java:
AWTUtilities.setWindowOpacity(frame, 0.5f);
Der Frame soll ja normal angezeigt werden.
 

jgh

Top Contributor
das bewirkt, dass der Frame durchsichtig wird...

und die setOpaque-Methode macht genau das, was man von ihr erwartet!
mit den "Auskommentierungen" mal ein wenig rumspielen...und du wirst erkennen, dass es eigentlich genau so funktioniert.

Java:
	public static void main(String[] args) {
		JFrame f = new JFrame();
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(500, 500);
		f.setLocationRelativeTo(null);
//		AWTUtilities.setWindowOpacity(f, 0.5f);
		JPanel p = new JPanel();
		p.setBackground(Color.RED);
//		p.setOpaque(false);
		f.add(p);
		f.setVisible(true);
	}
 

Hackepeter

Aktives Mitglied
Ich habe es genau so gemacht und ich kann durch das JPanel leider nicht die Hintergrundgrafik sehen:

Unbenannt8591.PNG


So in etwa sieht das Ganze aus:

Java:
public class Mainwindow extends JFrame {
	private JBGPanel contentPane; // erbt von JPanel; Hintergrundgrafik
	private JPanel panel = new JPanel();
	private JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);

	public Mainwindow() {
		tabbedPane.setOpaque(false);
		panel.setOpaque(false);
		tabbedPane.addTab("Gebäuderechner", null, panel, null);
		panel.setLayout(null);
		contentPane.add(tabbedPane);
	}	
}
Das ist im Groben der Aufbau, wie ich ihn habe. Beim tabbedPane zeigt das setOpaque(false) wirkung, denn oben bei den Reitern sieht man am Rand nun den Hintergrund.
 

Hackepeter

Aktives Mitglied
Niemand? :(

Edit: Hier noch mal zum Veranschaulichen:

Unbenanntad54.PNG


Habe nun sogar Zweifel gehabt, dass es doch am tabbedPane liegt und folgendes eingefügt:

Java:
UIManager.put("TabbedPane.contentOpaque", false);

Das hat allerdings auch nichts verändert.
 
Zuletzt bearbeitet:

Hackepeter

Aktives Mitglied
Hier noch ein Screenshot, damit ihr euch ein Bild machen könnt:

PS: Hat man nur begrenzt Zeit, seinen Beitrag zu editieren?
 

Anhänge

  • Unbenannt9223.PNG
    Unbenannt9223.PNG
    46,8 KB · Aufrufe: 48
Zuletzt bearbeitet:

Michael...

Top Contributor
Würde sagen falsche Frage.
Richtig: (Wie) kann man bei einer JTabbedPane den Hintergrund transparent setzen?

Da haben sich - wenn ich das richtig im Kopf habe - schon ein paar Leute den Kopf zerbrochen. Die JTabbePane ist eine relativ komplexe Komponente, da müsste man vermutlich ziemlich tief eingereifen um das ganze transparent zu bekommen.
 
S

Spacerat

Gast
@Hackepeter: Schon klar, warum du mit 'ner GlassPane nicht klar kommst, sonst würdest du ja hier nicht fragen, wie man einen Panel durchsichtig bekommt.
Die "Magie", die dahintersteckt ist, dass die "GlassPane" im Prinzip genau jener Panel einer Klasse ist, den du grad' selbst erstellen möchtest. Deswegen wird einem ja auch zum LayeredPane geraten, weil die bereits das von dir gewünschte bietet. Die Frage müsste also lauten, wie man eine solche "GlassPane" selbst erstellt und für AWT wäre diese Frage auch vollkommen berechtigt, in Swing aber langt es, wenn man sich dazu schlicht den Quellcode der LayeredPane zur Inspiration ansieht.
Java:
public void paintComponent(Graphics g) {
  for(Component c : layers) {
    c.paint(g);
  }
}
sollte das im allgemeinen ein wenig verdeutlichen (ob es so korrekt ist oder nicht :pueh:). "layers" ist dabei eine beliebige Collection<Component> durch welche das Graphics-Object gereicht wird. Das was mehr durchscheinen soll, sollte dabei am Anfang dieser Collection stehen.
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JPanel: Zeichnen funktioniert nicht - Nur grauer Hintergrund Java Basics - Anfänger-Themen 9
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
L zoomen aus jpanel Java Basics - Anfänger-Themen 7
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
C jPanel im jPanel verändern Java Basics - Anfänger-Themen 15
B JPanel nachträglich verändern Java Basics - Anfänger-Themen 20
C JPanel erhält sporadisch keinen Fokus Java Basics - Anfänger-Themen 3
I repaint bei jpanel Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben