Potresti usare tutti e due, anche con una singola classe che estenda MouseAdapter (che implementa già i metodi di entrambi, quindi puoi ridefinire solo quello che ti interessa) e aggiungere lo stesso listener con entrambe le funzioni, es:
JPanel panelSet = ...
MouseAdapter mouseAdapter = new MouseAdapter () {
@Override public void mouseEntered (MouseEvent e) { }
// ...
@Override public void mouseDragged (MouseEvent e) { }
};
panelSet.addMouseListener (mouseAdapter);
panelSet.addMouseMotionListener (mouseAdapter);
Vado a memoria, ma dovrebbe funzionare.
Questo in generale ti consente di intercettare ogni tipo di evento, e di agire di conseguenza.
Il mouseDragged normalmente sarebbe il metodo giusto per eventi in cui serve la pressione continua del mouse.
Ma qui potrebbe non servire, nel senso che non stai trascinando un immagine o altro, non devi insomma "rispondere" ad ogni evento generato dalla pressione mantenuta, ti interessa solo sapere in quali lotti sei transitato nel lasso di tempo in cui il mouse era premuto.
Quindi io userei il resto dei metodi, seguendo ad esempio una logica di questo tipo:
- Quando entri nel mousePressed (che a differenza del mouseClicked vene generato solo dalla pressione del tasto del mouse, non serve che sia stato rilasciato) metti un flag a true, che indica l'inizio della pressione del mouse. In questo momento potresti creare/svuotare una lista di lotti o di indici di lotti dove andrai a memorizzare tutti quelli che vengono attraversati dal mouse.
- Quando entri nel mouseEntered controlli il valore di questa variabile: se è true aggiungi l'indice del lotto/il lotto alla lista che hai svuotato in precendenza.
- Quando entri nel mouseReleased metti il flag a false, la pressione del mouse è terminata. In questo punto scegli cosa fare della lista che hai riempito.
Ovviamente quando fai un singolo click del mouse (senza tenerlo premuto), il mousePressed e il mouseReleased saranno chiamati subito uno dopo l'altro, quindi avrai sempre una lista vuota e non dovrai fare nulla.
Ma se invece tieni il mouse premuto a lungo ed entri nei vari lotti avrai l'insieme dei lotti che sono stati attraversati, e potrai farne quello che vuoi.
Poi puoi inventarti quello che vuoi con tutti gli altri metodi, questa è una bozza di quello che farei io con le informazioni a disposizione.
Purtroppo non riesco a buttare giù adesso un codice d'esempio, se intanto la soluzione ti piace puoi provare a scrivere tu qualcosa, per qualsiasi dubbio o altra proposta scrivi pure