/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Videresending af events
Fra : Rune Peter Olsen


Dato : 22-01-01 15:50

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é?

Mvh Rune P. Olsen

 
 
Lars Dam (23-01-2001)
Kommentar
Fra : Lars Dam


Dato : 23-01-01 10:33

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"

Rune Peter Olsen (27-01-2001)
Kommentar
Fra : Rune Peter Olsen


Dato : 27-01-01 14:52

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"

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste