Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    144

    [Java] Problema con evento mouseReleased

    Ciao ragazzi, ho provato a dare un occhio, ma non ho trovato nulla, c'è una cosa che non capisco sul mouse released.
    In pratica ho un pannello A sul quale è attivo il mousePressed e funziona perfettamente.
    In un altro pannello B ho provato ad attivare l'evento mouseReleased, ma funziona solo quando schiaccio il tasto nel pannello B, se lo schiaccio nel pannello A e lo rilascio in B non lancia l'evento.
    Perchè? Devo forse attivare gli eventi(più che altro quello del rilascio) all'interno del contenitore di entrambi i pannelli? E se cì come faccio poi a capire su quale componente contenuto mi trovo?
    Vi ringrazio anticipatamente.

    Ciao

    conte06

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Non ne ho capito nulla.
    Potresti postare un po' di codice?

    Ad ogni modo: il metodo mouseReleased() si occupa di intercettare il rilascio del pulsante del mouse... è ovvio che questo evento è preceduto prima da un mousePressed().


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    144
    Mi spiego meglio:
    Ho una label A così fatta:

    jLabel.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mousePressed(java.awt.event.MouseEvent evt) {
    jLabelMousePressed(evt, imageCompletePath);
    }
    });

    che naturalmente in jLabelMousePressed farà qualcosa
    Poi ho un JPanel con la stessa cosa, ma mouseReleased al posto di mousePressed. Ora vorrei che il metodo richiamato dall'evento mouseReleased fosse richiamato quando clicko col mouse sulla Label A e rilascio il mouse sul JPanel B; invece non funziona.
    L'evento del rilascio del mouse funziona su B solo se schiaccio il mouse stando su B stesso.
    Perchè?
    Attendo fiducioso

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Sinceramente non ho mai provato a realizzare nulla di simile, comunque credo che non funzioni poichè il Listener che interviene è diverso: a mio modo di vedere un evento mouseReleased si può realizzare se e solo se si è verificato prima un evento mousePressed. Il fatto che questo evento sia stato attivato su di un altro oggetto, e di conseguenza venga intercettato da un ascoltatore diverso, preclude al secondo ascoltatore di rilevare l'evento successivo, in quanto non è stato attivato e non è lui ad essere preposto all'intercettazione degli eventi in quel momento.
    Credo, infatti, che l'evento mouseReleased debba venir intercettato dallo stesso ascoltatore che ha rilevato il mousePressed, anche se tale evento viene a verificarsi "al di fuori dell'area di sua competenza" (intesa come area visibile). L'area di competenza di un Listener, sempre secondo me, non termina, infatti, dove termina l'area visibile, ma quando questo perde di significato: un MouseListener, per sua natura, è in grado di intercettare tutti gli eventi del mouse per cui esiste un metodo e anche se questi non vengono implementati (o meglio, vengono implementati vuoti, come nel caso del MouseAdapter) vengono lo stesso intercettati ed elaborati se il listener viene invocato.

    Per questo credo che a te serva unq cosa del genere: implementare anche il metodo mouseReleased e controllare, tramite le coordinate del mouse, se questo evento è avvenuto al di sopra della Label o al di fuori.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.