Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55

    Jtable con colonna check box - come prelevare dalla jtable + di una riga selezionata

    Salve ragazzi ! Ho un piccolo problema che sembra stupido , ma ho gia perso + di 20 min

    Praticamente il metodo getSelectedRows() che dovrebbe passare un'oggetto vettore int con all'interno tutte le righe selezionate , mi passa solo l'ultima riga selezionata , funzionando come se fosse il metodo getSelectedRow(). Vi passo il codice

    codice:
        
    
    String nome="";       
                 
     int[] row = table.getSelectedRows();    
                    
    for(int i=0;i<row.length;i++){        
                     
    nome = nome + " " + table.getValueAt(row[i],0).toString();     
    
    }                
    nomi.setText(nome);
    Se vi serve anche come ho popolato la table e il mio AbstractTableModel fatemi sapere che ve lo invio ;-)

    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    getSelectedRow() e getSelectedRows() ritornano le righe selezionate nel senso che hanno una selezione attiva... non le righe che risultano "selezionate" da una JCheckBox... questo lo sa solo il tuo modello. La JCheckBox è solo una proprietà di un campo del singolo record presente nel tuo modello, che non ha nulla a che vedere con la "selezione" nel senso del SelectionListener.

    Devi essere tu a implementare nel tuo modello un metodo che si scorra tutti i record e costruisca un (array? ArrayList? Vector? quello che vuoi) popolandolo con tutte le righe che hanno la proprietà settata a true e poi lo restituisca.

    Non confondere il modello dei dati con il modello di selezione (che sono due cose concettualmente molto diverse).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55
    Hai ragione Lele.. avevo gia pensato di creare io un metodo , ma pensavo che ci fosse un modo piu' veloce sia per me nel programmare , sia come tempo di computazione del programma stesso senza dover scorrere nuovamente il recordset.

    Esiste un metodo che preleva tutti i dati presenti a video della jtable ? e poi poter fare un ciclo per scorrere tutte le righe contenute ? e poi vabbè fare tutti i controlli che dovevo fare che non è un problema ( quali righe sono checked ) .

    Chiedo questo per poter lasciar perdere il database , e non ho bisogno di aggiornare i dati a ogni selezione ( up date del campo boolean selezione)

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da gua
    Hai ragione Lele.. avevo gia pensato di creare io un metodo , ma pensavo che ci fosse un modo piu' veloce sia per me nel programmare , sia come tempo di computazione del programma stesso senza dover scorrere nuovamente il recordset.

    Esiste un metodo che preleva tutti i dati presenti a video della jtable ? e poi poter fare un ciclo per scorrere tutte le righe contenute ? e poi vabbè fare tutti i controlli che dovevo fare che non è un problema ( quali righe sono checked ) .

    Chiedo questo per poter lasciar perdere il database , e non ho bisogno di aggiornare i dati a ogni selezione ( up date del campo boolean selezione)
    Non ha molto senso... la JTable sfrutta un TableModel per poter visualizzare i dati in esso contenuti... questo TableModel è (o dovrebbe essere) assolutamente indipendente dal Database da cui i dati possono provenire... chi preleva i dati dal DB non dovrebbe essere il TableModel. Dovrebbe essere qualcun altro che gestisce il DB (fa connessioni, query, ecc) e che popola il TableModel.

    Il TableModel dovrebbe occuparsi solo di "contenere" i dati che provengono dall'applicazione e notificare la JTable quando questi subiscono delle modifiche.

    Non ha molto senso avere un metodo per prelevare tutti i dati presenti a video... cosa vorrebbe dire? Quelli effettivamente visibili? E se ridimensiono la finestra e il numero di record visibili cambia? La cosa diventerebbe ingestibile.

    Se hai racchiuso nel TableModel il reperimento dei dati da DB, dovresti rivedere la progettazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55
    ok grazie Lele riflettero' sui tuoi consigli e trovero' la giusta soluzione.

    Come avrai capito non sono un'esperto nel modificare i table Model

    Grazie alle tue risposte , hai chiarito alcuni miei dubbi


  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    55
    fatto ho ottenuto quello che volevo

    codice:
            
    
     String nome="";                 
    for(int i=0;i<table.getModel().getRowCount();i++){      
        
      //sarebbe la cella booleana         
     if(table.getModel().getValueAt(i, 1).toString().equals("true")){    
                   
           nome = nome + table.getModel().getValueAt(i, 0).toString();
     //sarebbe cella nome     
                      
     }                  
        }              
    
    nomi.setText(nome);
    Grazie Lele ho utlizzato i metodi del Table Model ;-)

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.