Har fundet ud af det nu... Mange tak for hjælpen
Mvh Rune P. Olsen
Lars Dam wrote:
>
> On Mon, 22 Jan 2001 15:50:25 +0100, Rune Peter Olsen
> <c971408@student.dtu.dk> wrote:
>
> >Hej Alle
> >
> >Jeg sidder her med et lille problem, som jer håber på at der er en af
> >jer der måske har en løsning til:
> >
> >Hvis man fanger et event i et objekt, hvordan kan så sende det videre
> >til et underliggende objekt?
> >
> >Specifikt i mit tilfælde drejer det sig om et JPanel, som indeholder en
> >del komponenter som extender JComponent. Det kan ske at der er flere af
> >disse komponenter som overlapper hinanden, og da det altid er det
> >øverste som fanger f.eks. et eller andet mouse event, så ville det være
> >rart, at det objekt kunne sende eventet videre, hvis den finder ud af at
> >det ikke var ment på den selv.
> >
> >Er der nogen som har en god idé?
>
> To ting:
>
> 1) Du har placeret dine komponenter forkert, idet de overlapper, og de
> fanger mousevents for hindanden.
>
> 2) Det er meningen at de skal sidde sådan. I det tilfælde vil det
> typisk være sådan at du har lavet en større komponent som har
> aggregreret de mindre, og det er den større komponent der for din
> applikation skal betragtes som selvstændig. Eksempel vis kan man
> forestille sig en 'labeledTextField', som er et JPanel indeholdende en
> label+et textfield. Når din applikation bruger din labeledTextField,
> så skal applikationen ikke spekulere om musen er flyttet ind i din
> label.
>
> Derfor er det dit JPanels ansvar at lytte til mouse moves på din
> label, og delegere dem videre til den/de listeners der er interesseret
> i at vide om musen er flyttet ind i din jpanel.
>
> Dette gør du ved at, i din jpanel, lytte på events på dine sub
> komponenter, og når der så kommer en sådan event, lave en ny event af
> samme type og sende den til din JPanels listeners.
>
> Nu kan jeh ikke lige huske hur JPanel har sine listeners arrangeret,
> men: hvis der er en fireXXXevent() som sender eventen til
> listeners'ne, så skal du kalde den. Er der ikke det, må du overstyre
> add/removeXXXListener() metoderne, og selv have en liste af den type
> listeners, og selv lave en fireXXXEvent() metode, som iterativt kalder
> event metoden i de respektive listeners.
>
> >Mvh Rune P. Olsen
>
> vh. ld
> --
> "Time is the fire in which we burn"