Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    filtro a video sulla JTable

    salve ragazzi, vi spiego, quando apro il mio programma mi appaiono a video tutti i dati nella JTable.
    ho trovato in rete pezzo di codice che mi filtra i dati sulla JTable in base a cosa scrivo dentro il JTextField.
    solo che questo filtro funziona un pò male, nel senso che se io ho nella mia prima colonna dei valori es.

    ascia
    palma
    marsupio
    tavolo

    e scrivo nel campo JTextField la lettera "a" non mi trova le parole che iniziano per "a" ma mi ricompaiono tutte quelle che vedete sopra.

    vi posto il codice:
    codice:
    filterTitolo = new JTextField();
    		
    		//aggiungo gli ascoltatori 
            filterTitolo.getDocument().addDocumentListener(
                    new DocumentListener() {
                        public void changedUpdate(DocumentEvent e) {
                            newFilterTitolo();
                        }
                        public void insertUpdate(DocumentEvent e) {
                            newFilterTitolo();
                        }
                        public void removeUpdate(DocumentEvent e) {
                            newFilterTitolo();
                        }
                    });
    poi ci sta il metodo
    codice:
    private void newFilterTitolo() {
            RowFilter<MyTableModel, Object> rf = null;
            
            //If current expression doesn't parse, don't update.
            try {
                rf = RowFilter.regexFilter(filterTitolo.getText(), 0);//lo 0 indica la prima colonna
                
            } catch (java.util.regex.PatternSyntaxException e) {
                return;
            }
            sorter.setRowFilter(rf);
        }
    avete voi qualcosa per fare quello che dico io? cioè per capirci che se cerco "bagaglio"

    e scrivo nel campo di testo "ba", non mi deve comparire anche cabala..
    ciao a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Veramente funziona alla perfezione.
    Come hai scritto tu ti indica tutte le parole che contengono filterTitolo.getText().
    Devi mettere
    rf = RowFilter.regexFilter("^"+filterTitolo.getText(), 0);//^ indica l'inizio della parola
    Vedi API

  3. #3
    grazie simo hai ragione, le api le avevo viste ma avevo combinato un casino io con il ^..

    se ti va, puoi dare uno sguardo al

    [Java] JTable e database: aggiornamento dati pagina 3 ?
    perchè vorrei aggiornare la basedati tramite JDialog..

    ciao

  4. #4
    scusate una cosa, volevo sapere se si poteva ottimizzare l'uso di questo filtro..
    mi sono creato due campi JTextField: uno per la colonna TITOLO e uno per la colonna AUTORE.
    ora se inserisco nel campo JTextField una parola che riguarda la colonna TITOLO, mi fa il filtro e va bene.
    ora con i campi ridotti per il filtro di prima, volevo fare in modo che inserendo una parola nel campo JTextField che riguarda la colonna AUTORE, mi facesse il filtro su quello che è comparso dal filtro di prima, e non rifarmi il filtro considerando tutti i campi che c'erano all'inizio.
    avete capito?
    ciao

  5. #5
    non si può fare quello che ho scritto sopra?
    ciao a tutti

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    28
    Non ho mai provato, ma vedi un po' se funziona...
    codice:
    private void newFilterTitolo() {
            RowFilter<MyTableModel, Object> rf = null;
            RowFilter<MyTableModel, Object> rf1 = null;
            RowFilter<MyTableModel, Object> rf2 = null;
            
            //If current expression doesn't parse, don't update.
            try {
                rf1 = RowFilter.regexFilter(filterTitolo.getText(), 0);
                rf2 = RowFilter.regexFilter(filterAutore.getText(), X);//la X indica la col. Autore nella tabella
                List<RowFilter<MyTableModel,Object>> filters = new ArrayList<RowFilter<MyTableModel,Object>>(2);
                filters.add(rf1);
                filters.add(rf2);
                rf = RowFilter.andFilter(filters);            
            }
            catch (java.util.regex.PatternSyntaxException e) {
                return;
            }
            sorter.setRowFilter(rf);
        }
    Ah, non ho fatto alcun controllo per semplicità...

  7. #7
    ciao signal, mi da questo errore in fase di compilazione.
    codice:
    GUIDistributore.java:560: reference to List is ambiguous, both class java.util.List in java.util and class java.awt.List in java.awt match
    
    List<RowFilter<MyTableModel,Object>> filters = new ArrayList<RowFilter<MyTableModel,Object>>(2);

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    28
    Ok, c'è un'ambiguità da risolvere.
    Scrivi direttamente ArrayList<RowFilter<MyTableModel,Object>> filters = ...
    invece di List<RowFilter<MyTableModel,Object>> filters = ...

  9. #9
    grande signal, funge funge..

    signal, sai anche come si deselezionano le righe di una JTable selezionate?

    sai perchè voglio fare sta cosa, perchè io faccio modificare una riga alla volta, quando una persona mi seleziona tre righe della JTable e clicca sul pulsante modifica gli faccio uscire un

    codice:
     if(table.getSelectedRowCount()>1){//se  hai selezionato più di una riga
    			JOptionPane.showMessageDialog(null,"Devi selezionare solo una riga e premere Aggiorna", "Attenzione",JOptionPane.ERROR_MESSAGE);
    
    //quando esce da qui le righe devono essere deselezionate
    }
    una volta che preme ok lui esce ma le righe rimangono selezionate, ci sta un modo per deselezionarle?un comando?
    ciao e sempre grazie di tutto.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    28
    Puoi fare così:

    ListSelectionModel selModel = table.getSelectionModel();
    selModel.clearSelection();

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.