Visualizzazione dei risultati da 1 a 10 su 18

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MBdip Visualizza il messaggio
    non ho però compreso il metodo setSquadra… O meglio, come deve essere implementato per fare ciò che dici?
    I metodi di TableModel servono principalmente a JTable. Ma tu hai piena facoltà (e in certi scenari come il tuo è utile) di aggiungere tutti i metodi specifici per operare in maniera più strutturata/consona sugli oggetti nel table model.

    Quindi metodi es. setSquadra, addSquadra, removeSquadra, removeAll ......

    setSquadra è banale, l'unica particolarità è il fireXXX da scegliere, visto che con un set del genere possono cambiare potenzialmente i dati di tutte le colonne nella riga settata:

    codice:
    class SquadreTableModel extends AbstractTableModel {
    
        private final  ArrayList<Squadra> squadre;
    
    
        public void setSquadra(int row, Squadra squadra) {
            squadre.set(row, squadra);
            fireTableRowsUpdated(row, row);   // notifica che è cambiata tutta la riga (potenzialmente tutte le colonne)!
        }
    
        .....
    }
    Quote Originariamente inviata da MBdip Visualizza il messaggio
    e poi ancora, come faccio a richiamare un metodo dello specifico TableModel? Se chiamo tabella.getModel().metodoCreato() viene restituito errore...
    Perché getModel() ha tipo di ritorno TableModel, attraverso cui non puoi ovviamente "vedere" i metodi nuovi che hai definito in una implementazione specifica.
    Se tu sai che l'oggetto è realmente un SquadreTableModel, puoi fare un cast (tanto sai tu che non fallirà a runtime):

    ((SquadreTableModel) tabella.getModel()).metodoCreato()

    Ma così non è molto bello e pulito e ... dovresti oltretutto farlo ogni volta. La cosa più semplice e sensata è quella di tenerti da parte un campo apposito con il riferimento al tuo table model specifico. Tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    Messaggi
    42
    hai ragione, mi ero proprio dimenticato di poter fare cast.
    Anche se
    Quote Originariamente inviata da andbin Visualizza il messaggio
    La cosa più semplice e sensata è quella di tenerti da parte un campo apposito con il riferimento al tuo table model specifico. Tutto qui.
    non comprendo cosa voglia dire, magari potrebbe essere la risposta alla mia prossima domanda:
    in quale occasione devo chiamare il metodo setSquadra? perché come hai specificato nella fase quotata non è molto bello e pulito fare cast ogni volta

    p.s.
    nonostante avessi creato il metodo setCapitano all'interno del modello, se lo chiamavo la tabella comunque non veniva aggiornata. Ho dovuto comunque aggiungere il metodo setSquadra per far sì che venisse aggiornata la riga della squadra.
    Quindi alla fine basterebbe chiamare il fireTableRowsUpdatedsu un campo dopo la modifica per far aggiornare lo stesso se non sbaglio. Ovviamente all'interno del modello.
    Ultima modifica di MBdip; 20-06-2014 a 15:13

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da MBdip Visualizza il messaggio
    non comprendo cosa voglia dire, magari potrebbe essere la risposta alla mia prossima domanda:
    codice:
    private SquadreTableModel squadreTableModel;
    in un'altra parte della tua applicazione dove chiaramente hai e gestisci i vari componenti, tabelle, ecc....

    Quote Originariamente inviata da MBdip Visualizza il messaggio
    in quale occasione devo chiamare il metodo setSquadra?
    Quando (per qualunque motivo) vuoi cambiare una riga della tabella.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.