Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    mouseClicked lento su JPanel

    Ho un JPanel che ha un MouseListener. Se aggiungo una JTextArea al JPanel e provo a cliccare su quest'ultima, il metodo mouseClicked non viene invocato. Se invece sostituisco la JTextArea con una JLabel e provo a clickarla, viene invocato il mouseClicked. Sembra quindi che la JLabel sia trasparente e in più, il click non viene intercettato sempre. Qualche volta è come se venisse ignorato. Da cosa può dipendere?

  2. #2
    non puoi usare mouseClicked con JPanel penso,
    se tu fossi qui

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: mouseClicked lento su JPanel

    Originariamente inviato da redcloud
    Ho un JPanel che ha un MouseListener. Se aggiungo una JTextArea al JPanel e provo a cliccare su quest'ultima, il metodo mouseClicked non viene invocato. Se invece sostituisco la JTextArea con una JLabel e provo a clickarla, viene invocato il mouseClicked. Sembra quindi che la JLabel sia trasparente e in più, il click non viene intercettato sempre. Qualche volta è come se venisse ignorato. Da cosa può dipendere?
    Dalla documentazione di MouseEvent:

    For lightweight components, such as Swing's components, mouse events are only dispatched to the component if the mouse event type has been enabled on the component. A mouse event type is enabled by adding the appropriate mouse-based EventListener to the component (MouseListener or MouseMotionListener), or by invoking Component.enableEvents(long) with the appropriate mask parameter (AWTEvent.MOUSE_EVENT_MASK or AWTEvent.MOUSE_MOTION_EVENT_MASK).

    Su un JLabel, gli eventi del mouse sono per default disabilitati.

    Se facessi una tua sottoclasse es:

    codice:
    class MyLabel extends JLabel {
        public MyLabel(String s) {
            super(s);
            enableEvents(AWTEvent.MOUSE_EVENT_MASK);
        }
    }
    Allora mettendo un MyLabel, gli eventi del mouse non andrebbero più al "contenitore" (il tuo pannello).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Ok, grazie, ho capito. Restava solo il problema della lentezza che ho risolto sovrascrivendo il metodo mousePressed anzichè mouseClicked.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.