Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339

    Evidenziare elemento trovato in una JTable al punto desiderato.

    Ciao a tutti

    Dispongo di una JTable , dotata di una scroll bar , che visualizza degli articoli .

    Ho implementato un metodo per la ricerca che "evidenzia" la riga corrispondente alla parola cercata.
    (la riga si colora di blu)

    Il problema però è che quando si fa la ricerca per elementi che non si vedono (cioè si deve usare la scroll bar per visualizzarli) la JTable non li visualizza all'istante ; devo poi io usare la scroll bar per arrivare alla riga evidenziata.

    Esiste qualche metodo per far si che la scroll bar si posizioni automaticamente alla riga cercata?
    Non sono riuscito a trovarlo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Markus85 Visualizza il messaggio
    Esiste qualche metodo per far si che la scroll bar si posizioni automaticamente alla riga cercata?
    Sì, in diversi modi. Vedi mio esempio ProgrammaticTableScroll.java
    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
    Registrato dal
    Feb 2011
    Messaggi
    339
    Perfetto Ho risolto.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Ho parlato troppo presto

    Praticamente se faccio la ricerca per un elemento che si trova andando verso il basso della Jtable , ok si posiziona . Facendo una seconda ricerca per un elemento che si trova verso l'alto , non si posiziona

    codice:
        public void actionPerformed(ActionEvent e){
            
            String elementoDaCercare = new String(InterfacciaPrincipale.campoRicerca.getText());
            int risultato = InterfacciaPrincipale.Magazzino.cercaArticolo(elementoDaCercare);
            if(risultato == -1)
                new NotificaNessunArticoloPresente();
            else{
                for(int row = 0 ; row <= InterfacciaPrincipale.Jtable.getRowCount() - 1; row++){
                    for(int col = 0 ; col <= InterfacciaPrincipale.Jtable.getColumnCount() -1 ; col++){
                        if(elementoDaCercare.equals(InterfacciaPrincipale.Jtable.getValueAt(row, col)))
                            InterfacciaPrincipale.Jtable.setRowSelectionInterval(row, row);
                            Rectangle rect = InterfacciaPrincipale.Jtable.getCellRect(row, col, true);
                            InterfacciaPrincipale.Jtable.scrollRectToVisible(rect);
                            
                    }//FOR 2
                }//FOR 1
        
            }// ELSE
                    
        }// ACTION PERFORMED

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    339
    Aspetta aspetta....
    Credo di aver risolto
    Ecco la versione corretta:

    Bastava Parentesizzare l'if

    codice:
        public void actionPerformed(ActionEvent e){
            
            String elementoDaCercare = new String(InterfacciaPrincipale.campoRicerca.getText());
            int risultato = InterfacciaPrincipale.Magazzino.cercaArticolo(elementoDaCercare);
            if(risultato == -1)
                new NotificaNessunArticoloPresente();
            else{
                for(int row = 0 ; row <= InterfacciaPrincipale.Jtable.getRowCount() - 1; row++){
                    for(int col = 0 ; col <= InterfacciaPrincipale.Jtable.getColumnCount() -1 ; col++){
                        if(elementoDaCercare.equals(InterfacciaPrincipale.Jtable.getValueAt(row, col))){
                            InterfacciaPrincipale.Jtable.setRowSelectionInterval(row, row);
                            Rectangle rect = InterfacciaPrincipale.Jtable.getCellRect(row, col, true);
                            InterfacciaPrincipale.Jtable.scrollRectToVisible(rect);
                            
                        }
                    }//FOR 2
                }//FOR 1
        
            }// ELSE
                    
        }// ACTION PERFORMED

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