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

    Filtro di ricerca su JTable

    Salve ragazzi,

    ieri mi sono imbattuto in una JTable con filtro di ricerca.

    Ho trovato tutto il codice qui

    http://download.oracle.com/javase/tu...ilterDemo.java


    Ho adattato un pò il codice di questa classe alla mia tabella e tutto funziona perfettamente.

    Però ho notato che la ricerca funziona solo se vengono rispettati le lettere maiuscole e minuscole.

    Quindi è keysensitive. E' possibil fare in modo che questo non accada e che la ricerca funzioni ignorando le lettere minuscole e maiuscole???

    Grazie a tutti per le vostre risposte

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    è case-sensitive, non key.
    In ogni caso, vedendo il codice noti che il filtro lo applichi qui

    codice:
       /** 
         * Update the row filter regular expression from the expression in
         * the text box.
         */
        private void newFilter() {
            RowFilter<MyTableModel, Object> rf = null;
            //If current expression doesn't parse, don't update.
            try {
                rf = RowFilter.regexFilter(filterText.getText(), 0);
            } catch (java.util.regex.PatternSyntaxException e) {
                return;
            }
            sorter.setRowFilter(rf);
        }
    La cosa che a te serve notare è questa: RowFilter.rexexFilter(....)

    è questo che applica il filtro.
    Se guardi le API noti che il problema è il primo parametro che passi (una regex): scrivi quella bene e ti dovrebbe funzionare

  3. #3
    leggendo quel link ho notato che la stringa Regex che gli passo è praticamente quello che gli scrivo nella text filterText. Ma quello penso che sia giusto.

    Quello che invece è sbagliato forse è il metodo con cui effettuo la ricerca o no?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    no perché la ricerca non la fai tu, ma ti affidi ad un sistema con regex.
    Il penso non è certezza, se hai la certezza allora è un altro paio di maniche
    Fai una prova stupida:
    1. crea classe main alternativa fuori dal tuo progetto
    2. nel main metti come stringa direttamente la stessa cosa che scrivi nella textbox
    3. parsa con la libreria regex una stringa da te specificata via codice (tipo quella che ti trovi nella casella della tabella). Fallo 2 volte, una stringa che dovrebbe dirti ok e una che dovrebbe dirti not ok
    4. vedi cosa restituisce.

    se il risultato è uguale (come mi aspetto) allora tu sbagli a scrivere la regex. altrimenti la libreria non funziona (e lo segnali).

    Io resto dell'idea (avendo visto come è fatta la classe) che il problema sia la regex che passi (oltretutto non fai controlli di validità)

  5. #5
    proverò a fare questa prova

    cmq quella classe è stata fatta dal team di Java non da me

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    si ma tu inserisci la regex, quindi vuole dire che la regex che vai a specificare è sbagliata, capito quello che intendo?

  7. #7
    onestamente no. Io la regex che gli inserisco è quello che scrivo nella mia text

    ora per prelevare quello che ho sulla mia text l'unica soluzione è text.getText();

    la mia rehex è questo

    almeno credo

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ti ho detto come fare la prova, non è detto che la tua regex sia corretta, non guardare alla libreria ma a quello che scrivi tu.
    fai una classe a parte dove scrivi la stessa cosa che scrivi nella textbox, quel filtro usa regex per capire se filtrare o no, se provi tu a filtrare vedi se scrivi male la regex oppure se la libreria è sbagliata. Queste sono stupide prove che si fanno per capire dove è l'errore, visto che tu non hai la certezza assoluta che la regex sia corretta.
    Difficilmente trovo un errore del genere in una libreria già in circolazione da un po'

  9. #9
    allora ho provato a fare come mi hai detto tu e lo stesso se rispetto il case sensitive funziona altrimenti no

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    dimmi cosa scrivi nel programmino, cosa scrivi nella text come regex

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