Hallo, ich habe mal wieder ein kleines Problem und hoffe das ich nur irgendwas nicht blicke, vieleicht könnt Ihr mir helfen.
Es geht wiedermal um einen Grafischen Templateeditor. Auf dem Editor (JLayeredPane) können verschiedene JComponents hinzugefügt werden, diese liegen innerhalt eines JComponentBounds (eine Klasse um Affine Transformation zu ermöglichen - extends JInternalFrame)
Auf dem JComponents und den JComponentBounds eines jeden Objects liegt ein MouseListener um bei einem Klick ein Optionsfeld in einem JPanel anzuzeigen (Optionen zur bearbeitung der jeweiligen Komponente) Soweit funktioniert auch alles. Die neuste Funktion soll sein, dass auf der Editoroberfläche weitere kleinere Editoren eingefügt werden können (JLayeredPane) auf der ebenfalls JComponents platziert werden können. Für den MouseListener verwende ich "mousePressed" .
Problem: bei einem Klick auf eine JComponent in dem Kleineren Editor wird das JLayeredPane des kleinen Editors in Event.getSource() zurückgegeben. Innerhalb der Aktion habe ich ein System.out platziert, daraus kann ich sehen das im Normalfall das Event von unten nach oben läuft (Editor -> JcomponentBounds -> JComponent)
Bei einem Objekt im kleinen Editor wird mit allerdings zweimal das JLayeredPane des kleinen Editors ausgegeben, bei einem klick auf den Rahmen des Objects (JComponentBounds) funktioniert es allerdings, da wird nur das Objekt im Event abgehandelt.
Lösungsversuche:
- Event mit consumed() abfangen hat nicht funktioniert (wie auch, das das Objekt garnicht in der abfolge auftaucht).
- Mit MouseClicked funktioniert es, ist leider unbrauchbar für meine Zwecke (wo ist der Unterschied?)
(Editor hat einen seperaten Mouselistener, alle anderen Objekte darauf bekommen über eine ControllerKlasse den selben Mouselistener)
Ich hoffe das war jetzt nicht zu durcheinander, ich habe mal eine kleine Grafik angefügt, ich denke der Code verwirrt hier nur, ist ja eigentlich eine simple Sache, oder sollte es zumindest sein.
Vielen Dank für eure Hilfe, ich seh den Wald vor lauter Bäumen nicht
Es geht wiedermal um einen Grafischen Templateeditor. Auf dem Editor (JLayeredPane) können verschiedene JComponents hinzugefügt werden, diese liegen innerhalt eines JComponentBounds (eine Klasse um Affine Transformation zu ermöglichen - extends JInternalFrame)
Auf dem JComponents und den JComponentBounds eines jeden Objects liegt ein MouseListener um bei einem Klick ein Optionsfeld in einem JPanel anzuzeigen (Optionen zur bearbeitung der jeweiligen Komponente) Soweit funktioniert auch alles. Die neuste Funktion soll sein, dass auf der Editoroberfläche weitere kleinere Editoren eingefügt werden können (JLayeredPane) auf der ebenfalls JComponents platziert werden können. Für den MouseListener verwende ich "mousePressed" .
Problem: bei einem Klick auf eine JComponent in dem Kleineren Editor wird das JLayeredPane des kleinen Editors in Event.getSource() zurückgegeben. Innerhalb der Aktion habe ich ein System.out platziert, daraus kann ich sehen das im Normalfall das Event von unten nach oben läuft (Editor -> JcomponentBounds -> JComponent)
Bei einem Objekt im kleinen Editor wird mit allerdings zweimal das JLayeredPane des kleinen Editors ausgegeben, bei einem klick auf den Rahmen des Objects (JComponentBounds) funktioniert es allerdings, da wird nur das Objekt im Event abgehandelt.
Lösungsversuche:
- Event mit consumed() abfangen hat nicht funktioniert (wie auch, das das Objekt garnicht in der abfolge auftaucht).
- Mit MouseClicked funktioniert es, ist leider unbrauchbar für meine Zwecke (wo ist der Unterschied?)
(Editor hat einen seperaten Mouselistener, alle anderen Objekte darauf bekommen über eine ControllerKlasse den selben Mouselistener)
Ich hoffe das war jetzt nicht zu durcheinander, ich habe mal eine kleine Grafik angefügt, ich denke der Code verwirrt hier nur, ist ja eigentlich eine simple Sache, oder sollte es zumindest sein.
Vielen Dank für eure Hilfe, ich seh den Wald vor lauter Bäumen nicht