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

    [Java] passaggio di parametri con mouseListener e JList

    Ho creato una JList e le ho assegnato un un mouseListener che rimanda al controller

    codice:
            String[] data= new String[] { 
                    "a","b","c","d","e"}; 
                    JList l=new JList(data); 
                    l.addMouseListener(c.mouseListener);
                    JScrollPane sp= new JScrollPane(l);
    nel controller ho implementato il mouseListener, ma qui ahimè non so più muovermi. Vorrei che fosse passata la stringa su cui ho ho cliccato così che dal controller posso poi passarla al model. Tuttavia non sono riuscito a capire come fare. Il massimo ottenuto è questo e non produce niente.

    codice:
        public void mousePressed(MouseEvent e) {
            String mouseString=e.toString();
            m.mouse(mouseString);

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Fared il toString() dell'evento non ha alcun senso.
    L'evento è un oggetto che serve solo a capire COSA e successo, DOVE è successo e poco altro.

    Non capisco perchè usare un MouseListener quando solitamente, per questo tipo di cose, si dovrebbe usare un ListSelectionListener (come evidenziato anche nella prima parte del Tutorial sull'uso delle Liste in Swing).

    Se proprio vuoi usare un MouseListener (che, comunque, ha altri scopi), allora dal MouseEvent devi ottenere l'oggetto "sorgente" dell'evento e da lì prendere il dato (tieni presente che potresti anche non averlo, perchè, appunto, il MouseListener non è il listener più utile per sapere se è stato selezionato qualcosa oppure no):

    codice:
    public void mousePressed(MouseEvent e) {
       // Ottengo la JList che ha scatenato l'evento
       JList lst = (JList) e.getSource();
    
       // Ottengo l'elemento selezionato (se ne esiste uno)
       String sel = (String) lst.getSelectedValue();
    
       // Se l'oggetto non è nullo, lo passo al metodo
       if (sel != null) {
          m.mouse( sel );
       }
    }

    Se il tuo scopo è quello di prelevare l'oggetto selezionato (ogni volta che l'utente clicca su un elemento) allora devi registrare un ListSelectionListener e tenere conto di una cosa: la JList (di default, se non ricordo male) permette anche la selezione multipla (cioè, in un dato istante, l'utente può selezionare più di un elemento, anche non consecutivamente). Puoi impostare tu questa caratteristica, andando ad agire sul ListSelectionModel (o anche direttametne sulla lista):

    codice:
    JList lista = new JList( ... );
    
    // Impongo la selezione singola (non più di un elemento per volta)
    lista.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
    
    // Altri valori possibili sono
    // ListSelectionModel.SINGLE_INTERVAL_SELECTION: permette la selezione di un unico intervallo contiguo
    // ListSelectionModel.MULTIPLE_INTERVAL_SELECTION: permette la selezione di più intervalli

    Ti consiglio di usare la documentazione, sia quella relativa alle classi (API) sia le relative pagine del tutorial che vengono solitamente linkate nella parte iniziale (la parte descrittiva) delle classi stesse, per cominciare a prendere confidenza con i componenti delle GUI Swing.

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