JPanel wie Canvas verwenden

Lastlord

Mitglied
Hallo,
ich habe eine Frage

Dieses kleine Demoprgramm enthält 3 sichbare Komponenten:
Einen JButton im Hintergrund,
einen JButton auf dem POPUP_LAYER des Layeredpanes des Fensters
und eine gefärbtes JPanel auf dem selben Layer.

Java:
import java.awt.Color;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;

public class Laytest {
	public static void main(String[] args) {
		JFrame fr = new JFrame("Fenster");
		fr.setUndecorated(true);
		fr.setSize(100, 100);

		fr.getContentPane().add(new JButton("Content"));

		JButton popbut = new JButton("POPUP_LAYER");
		popbut.setBounds(0, 0, 100, 30);
		fr.getLayeredPane().add(popbut, JLayeredPane.POPUP_LAYER);

		JPanel pan = new JPanel();
		pan.setBounds(0, 70, 100, 30);
		pan.setBackground(Color.red);
		fr.getLayeredPane().add(pan, JLayeredPane.POPUP_LAYER);

		fr.setVisible(true);

	}
}

Das Programm wird richtg dargestellt.

Es ist aber wichtig, dass wenn man über das gefärbte JPanel (pan) mit dem Mauszeiger geht, darunterliegende Komponenten nicht selektiert werden können.

Wieso:
Ich habe in dem Programm, das ich gerade schreibe eine JPanel, dessen
paint-Methode ich überschrieben habe, um eine eigene Komponente zu schaffen, die ich benötige.
Normalerweise würde ich dafür ein Canvas nehmen aber die Komponente soll teiltransperent sein.
Die dafür zuständige Methode, setOpaque(false), hat ein Canvas aber nicht. Und andere Komponenten wie Buttons oder so zu überschreiben kommt mir stümperhaft vor.

Wenn mir jemand sagen könnte, was ich mit dem JPanel machen muss, damit es Mausklicks "absorbiert", wäre mir sehr geholfen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück