Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 27 su 27
  1. #21
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Il mio problema è che devo rintracciare l'oggetto selezionato nella tabella per poi poter stampare le informazioni di questo oggetto in un altro panel.

    Nel mio caso l'oggetto è un Contact. Ho letto del metodo

    convertRowIndexToModel(row);

    potrei usare questo per avere in base alla riga selezionata l'oggetto Contact che mi serve?

  2. #22
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    Il mio problema è che devo rintracciare l'oggetto selezionato nella tabella per poi poter stampare le informazioni di questo oggetto in un altro panel.

    Nel mio caso l'oggetto è un Contact. Ho letto del metodo

    convertRowIndexToModel(row);

    potrei usare questo per avere in base alla riga selezionata l'oggetto Contact che mi serve?
    Innanzitutto convertRowIndexToModel è utile se c'è di mezzo un RowSorter che offre le funzionalità di filtro/ordinamento (e quindi gli indici di riga della view non è detto che siano gli stessi del model).
    Se non c'è un RowSorter semplicemente ... l'indice di riga della view è lo stesso del model!!!!!

    Quindi quando ricevi notifica, il ListSelectionEvent ti fornisce degli estremi "generici" della selezione. Generici nel senso che ti fornisce first e last ma non vuol dire che tutto quel range è selezionato ... solo che in quel range "qualcosa" è cambiato nella selezione.
    Devi usare i metodi di JTable per avere una "vera" informazione sulla selezione (e dipende se singola, intervallo singolo, intervallo multiplo).

    A quel punto dato un indice di riga, tu dovresti avere nel tuo model un metodo es.

    public Contact getContatto(int row) { ... }

    Lo devi fare tu questo metodo ... non è inerente a TableModel/AbstractTableModel .... solo tu "sai" come è fatta internamente la struttura dati!!! E se la struttura è appunto in un modo e di un tipo specifico sei tu che devi fornire i metodi per gestirla.

    Solo vedendolo attraverso un TableModel potresti solo accedere in modo generico ad una cella come Object (il getValueAt).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #23
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Hai un codice di esempio di un evento legato alla selezione di una riga della tabella?
    Perchè non riesco a capire!!

  4. #24
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Cool81
    Hai un codice di esempio di un evento legato alla selezione di una riga della tabella?
    Perchè non riesco a capire!!
    Al momento no e non ho tempo. Comunque è facile, immaginiamo una selezione singola (non intervalli):

    a) registri un ListSelectionListener sul ListSelectionModel
    b) in valueChanged() del listener vai leggere la riga selezionata usando getSelectedRow() di JTable (ignora le informazioni dell'evento)
    c) usi l'indice della riga per ottenere i dati della riga dal model (in un modo specifico come ho spiegato prima)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #25
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160
    Per concludere la discussione, posto il codice che ho scritto per gestire l'evento della selezione di una riga della tabella.

    codice:
    public void valueChanged(ListSelectionEvent e) {
                                int i = contactsTable.getSelectedRow();
                                Contact selected = tableModel.getContact(i);
                            }

    Il metodo getContact è implementato nella classe che estende AbstractTableModel ed è così:

    codice:
    public Contact getContact(int row){
                Contact c = resultContatti.get(row);
                return c;
            }
    dove resultContatti è un ArrayList<Contact>. Questo metodo mi restituisce appunto un oggetto Contact di cui posso fare quello che mi serve.

    a presto

  6. #26
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Dopo un giorno a sbattere la testa per far funzionare una JTable, mi son imbattuto in questa discussione. In 5 minuti di spiegazione letta, risolto.
    La riporto "in alto"

  7. #27
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Rubox
    La riporto "in alto"
    D'ora in poi, evita quest'ultimo passaggio che non è necessario, anzi...

    Vedi il Regolamento per ulteriori precisazioni.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.