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

    Completatore automatico con JList

    Ciao a tutti,
    ho un piccolo problema e non riesco a capire il perché si verifica.
    Ho implementato un completatore automatico su JTextField prendendo spunto da un esempio su Internet e l'ho reso adatto ai miei scopi.
    Detto questo prendo i dati da un DB li carico in una JList appena faccio il doppio click si scatena l'evento di completamento automatico.
    Il problema è che non appena clicco e viene completato il JTextField l'ultima lettera non viene stampata all'interno dello stesso.
    Ad esempio:
    ho "ROSSI Fabio" e viene copiato nella JTextField "ROSSI Fabi"

    Questo è il pezzo di codice che implementa la copiatura.


    codice:
    if (list.getSelectedValue() != null) {
       try {               
         String selectedSuggestion = ((String) list.getSelectedValue()).substring(subWord.length());
         textarea.getDocument().insertString(insertionPosition, selectedSuggestion, null);
         hide();
         return true;
       } 
       catch (BadLocationException e1) {
             e1.printStackTrace();
       }
             hideSuggestion();
    }
    return false;
    Il selectedSuggestion contiene la parte di stringa non scritta nel Field(ad esempio se ho scritto "RO" questa conterrà tutto il resto selectedSuggestion="SSI Fabio") ed effettivamente andando di debugging ho visto che contiene quel valore ed anche l'ultima lettera.

    insertionPosition viene calcolata precedentemente ed in maniera corretta e nel nostro caso varrebbe "2".

    Sembra tutto giusto ma non riesco a capire questo piccolo malfunzionamento.

    Grazie a tutti.
    Ciao.
    Ultima modifica di schumy2000; 19-02-2014 a 18:57
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    up
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  3. #3
    ho risolto con una banalità...
    invece di inserire la stringa col metodo insertString tramite il getDocument(), ho usato banalmente:
    codice:
    textarea.setText(textarea.getText()+selectedSuggestion);
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.