Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160

    Problema formattazione di una jTextField

    Ecco un nuovo problema che non mi spiego.

    Ho una jtextfield nella quale l'utente inserisce le parole da ricercare.
    Ma accade qualcosa di anomalo che mi impalla l'applicazione.

    Se nella jTextField digito come parola da cercare, la seguente sequenza di caratteri:

    "abc"

    invece di stampare da sx verso ds, nella jtextfield mi stampa da ds verso sx, quindi

    "cba"

    Come se il cursore invece di rimanere a ds dell'ultimo carattere inserito, rimane a sx.

    Quali proprietà devo settare per risolvere questo problema?
    Ad es. ho provato a settare diversamente horizontalAlignment a LEFT, ma niente.

    Grazie

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

    Re: Problema formattazione di una jTextField

    Originariamente inviato da Cool81
    Se nella jTextField digito come parola da cercare, la seguente sequenza di caratteri:

    "abc"

    invece di stampare da sx verso ds, nella jtextfield mi stampa da ds verso sx, quindi

    "cba"

    Come se il cursore invece di rimanere a ds dell'ultimo carattere inserito, rimane a sx.
    No no alt .... come sarebbe possibile? Cioè tu digiti 'a' poi 'b' poi 'c' e nel text field il testo sta a sinistra scritto cba??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Ancora nn ho capito come fosse possibile però è successo.
    Nel frattempo ho capito che il problema originario è che quando ho messo la jList nello scrollerPane, mi sono rimaste alla fine della lista degli spazi vuoti.

    Quando faccio la ricerca, mi cerca anche in questi spazi vuoti e quindi viene lanciata l'eccezione.

    Settare le righe della jList non basta, cosa devo settare altro?


    ps: Forse sto rompendo troppo le scatole, ma mi considero molto newbbie d java!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    mi sono rimaste alla fine della lista degli spazi vuoti.

    Quando faccio la ricerca, mi cerca anche in questi spazi vuoti e quindi viene lanciata l'eccezione.
    Non è che per caso ci sono dei null tra i tuoi elementi?? Se il model restituisce un valore null, il renderer di default non fa una piega ... semplicemente lo visualizza come una sottile (più sottile rispetto ad una linea con testo) linea vuota.
    Ma è chiaro che se cerchi di invocare dei metodi, come nel mio esempio strings[i].startsWith(searchString), se strings[i] è null ti becchi ovviamente NullPointerException.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Infatti il problema è quello.

    Nel mio codice, ho un metodo che trasforma un oggetto List in un array di stringhe.
    Questo array di stringhe mi serve proprio per riempire la listModel(AbstractListModel) che a sua volta riempie la jList. E da quello che ho capito l'unico oggetto che s può passare alla listModel è un array di stringhe. Giusto?


    Quindi ho il seguente metodo:

    codice:
    public String[] getArrayString(){
    
            UserProfile user = Persistence.getCurrentUserProfile();
            ContactsManager contactsManager = new ContactsManager(user);
            String infoUser = "";
            String[] infoUsers = null;
            String name = "";
            String tel = "";
    
            List<Contact> contactList;
            try {
                contactList = contactsManager.loadContacts();
    
                infoUsers = new String[contactList.size()];
                int i = 0;
                for (Iterator<Contact> it = contactList.iterator(); it.hasNext();) {
                    Contact infoContact = it.next();
                    name = infoContact.getName();
                    tel = infoContact.getTel();
                    if(name.trim().length() > 0 && tel.trim().length() > 0) {
                             infoUser = name + " " + tel;
                             infoUsers[i++] = infoUser;
                        
                    }
               }
    
            } catch (ConnectException ex) {
                ....
            }
            return infoUsers;
        }
    Il problema è che devo ridimensionare l'array infoUsers. Questo inizialmente ha una dimensione pari alla List<Contact> che contiene degli elementi che poi devono essere esclusi dall'array di stringhe.
    Quindi adesso il problema è ridimensionare l'array di stringhe.
    Oppure mi creo un altro oggetto List, dove ci metto gli elementi della prima List che soddisfano la condizione, e poi uno il secondo oggetto List per riempire l'array di stringhe.
    Che ne pensate?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    E da quello che ho capito l'unico oggetto che s può passare alla listModel è un array di stringhe. Giusto?
    Se il list model lo implementi tu estendendo AbstractListModel, la "struttura dati" puoi sceglierla e gestirla come ti pare, purché esponi le informazioni in modo coerente tramite i due metodi getSize e getElementAt. All'esterno non interessa come è "dentro" il list model ... basta che fornisca le informazioni a) quanti elementi ci sono e b) l'elemento all'indice X.
    Nel mio esempio di SearchableListModel la struttura dati è un ArrayList<String>.

    Originariamente inviato da Cool81
    Il problema è che devo ridimensionare l'array infoUsers. Questo inizialmente ha una dimensione pari alla List<Contact> che contiene degli elementi che poi devono essere esclusi dall'array di stringhe.
    Quindi adesso il problema è ridimensionare l'array di stringhe.
    Oppure mi creo un altro oggetto List, dove ci metto gli elementi della prima List che soddisfano la condizione, e poi uno il secondo oggetto List per riempire l'array di stringhe.
    Che ne pensate?
    Ci sono svariate soluzioni.

    Puoi tenere quel infoUsers come String[] e passare al list model array e numero "logico" di elementi (di cui il model ne deve ovviamente tenere presente ... non fare es. un for usando array.length!!)

    Puoi tenere sempre quel String[], alla fine della tua elaborazione sai quanti elementi utili ci sono quindi istanzi un nuovo array String[] della giusta dimensione e ricopi tutti gli elementi (puoi farlo a "mano" o con System.arraycopy() ).

    Puoi creare un altro ArrayList in cui inserire gli utenti e quindi passare al model il ArrayList.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Ho risolto.
    Ho messo come parametro al costruttore della listModel un ArrayList<String> e funziona.
    Grazie d tutto, ciao

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.