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

    [JAVA] Eliminare Ascoltatori sovrapposti (dovuti a classi sovrapposte)

    Sono in questa condizione, ho creato una classe EliminatoreOntologie a cui passo il riferimento di una Jlist e del ModelList ad essa associato; all'interno della classe creo un'ascoltatore per vedere dov'è il mouse quendo clikko 2 volte e cancellare il termine che seleziono.

    Il Problema: se instanzio più volte la classe EliminatoreOntologie in esso si sovrappongono più volte gli ascoltatori (che la garbage collector non fa in tempo ad eliminare) e quindi mi viene eseguito più volte la procedura di cancellazione ... come di fa a far chiudere l'oggetto e forzarlo a finalizzarsi?

    codice:
    public class EliminatoreOntologie {
        DefaultListModel listModel;
        JList jListOntologie;
        
        /** Creates a new instance of EliminatoreOntologie */
        
        public EliminatoreOntologie(JList JlistaOnt, DefaultListModel lm) {
            jListOntologie=JlistaOnt;
            listModel=lm;
            //JFormPrincipale=JFormPri;
        }
        
        public void EliminaSingOntologia() {
             jListOntologie.setEnabled(true);
             
             MouseListener mouseListenerList = new MouseAdapter() {
                 public void mouseClicked(MouseEvent e) {
                     if (e.getClickCount() == 2) {
                        //Controllo se la lista è vuota
                        if (listModel.getSize()>0) {
                            int index = jListOntologie.locationToIndex(e.getPoint());
                            listModel.removeElementAt(index);
                            jListOntologie.setEnabled(false);
                        }
                                  
                     }
                     
                 }
            };
            
            jListOntologie.addMouseListener(mouseListenerList);        
        }
          
    }
    So che ci sono comandi per eliminare l'ascoltatore come removeMouseListener(..)
    ma non riesco ad inserirlo all'interno del codice ....

  2. #2
    soluzioni a casaccio:

    1- fare di eliminatoreOntologie un sigleton? cosi' non devi crearne piu' istanze?

    2- creare una classe specifica per il listener e non blindarlo nel codice di elinimatoreOntologie? Cosi' magari puoi usare metodi set e get e toglierlo attraverso questi.

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.