Ik ben momenteel bezig met een applet waarin ik rond bewegende animaties en plaatjes direct op een Graphics object teken (middels drawImage). Nu moeten een aantal van die plaatjes klikbaar zijn. Omdat ik niet de standaard Containers en Components zullen mouseEvents niet worden geregisteerd.
Waar ik aan zat te denken is om een soort onzichtbare container gevuld met andere containers en components te plaatsen over het oppervlak waarop getekend wordt, waarin de locatie van de klikbare plaatjes overeenkomt met een aantal dummy components binnen die container. Probleem is alleen dat wanneer een container of component een setLocation opdracht krijgt dit een repaint triggert, waardoor de container over het oppervlakte gaat tekenen en je daardoor vervelend geknipper krijgt. Het grafische oppervlak en de container gaan dan namelijk door elkaar tekenen waardoor er een onrustig beeld onstaat.
Om de container onzichtbaar te maken heb ik de setVisible(false) methode gebruikt, maar dit zorgt ervoor dat alle mouseEvents niet meer geregistreerd worden door de container. Ik heb ook geprobeerd een custom container te maken waarin ik alle met paint gerelateerde methodes (paint, repaint, update, paintComponents) override en leeg laat, maar dan tekent de container alsnog pixels over het oppervlak heen. setOpaque(false) heeft hetzelfde effect..
Dus m'n vraag is: is er een manier om een doorzichtige container te maken waarin ik andere components en containers kan plaatsen waarop MouseEvents worden geregisteerd, zonder dat de container gaat tekenen op het beeld bij verplaatsing van een component/container?
Waar ik aan zat te denken is om een soort onzichtbare container gevuld met andere containers en components te plaatsen over het oppervlak waarop getekend wordt, waarin de locatie van de klikbare plaatjes overeenkomt met een aantal dummy components binnen die container. Probleem is alleen dat wanneer een container of component een setLocation opdracht krijgt dit een repaint triggert, waardoor de container over het oppervlakte gaat tekenen en je daardoor vervelend geknipper krijgt. Het grafische oppervlak en de container gaan dan namelijk door elkaar tekenen waardoor er een onrustig beeld onstaat.
Om de container onzichtbaar te maken heb ik de setVisible(false) methode gebruikt, maar dit zorgt ervoor dat alle mouseEvents niet meer geregistreerd worden door de container. Ik heb ook geprobeerd een custom container te maken waarin ik alle met paint gerelateerde methodes (paint, repaint, update, paintComponents) override en leeg laat, maar dan tekent de container alsnog pixels over het oppervlak heen. setOpaque(false) heeft hetzelfde effect..
Dus m'n vraag is: is er een manier om een doorzichtige container te maken waarin ik andere components en containers kan plaatsen waarop MouseEvents worden geregisteerd, zonder dat de container gaat tekenen op het beeld bij verplaatsing van een component/container?
[ Voor 5% gewijzigd door Kman op 21-05-2005 17:21 . Reden: wat grammatica en spelling verbeterd ]