KuroKami69 ha scritto:
ho bhe ho scaricato un pdf, che ora non mi ricordo dove l'ho preso, ma che allego, e ho dato una letta a questo sito, ma essendo in inglese non ho capito molto.
se foste così gentili da farmi voi una breve spiegazione, sono sicuro che potrei imparare molto
Il link è quello del tutorial ufficiale su JTable. Lì come concetti in effetti c'è TUTTO ma è appunto in inglese e quindi andrebbe compreso bene. L'ultimo documento linkato (TabelleJTable.pdf) è in italiano ma ad una occhiata veloce lo trovo scarno e poco descrittivo (oltre al fatto che gli esempi di codice non sono formattati al meglio)
Ok, ecco una breve infarinatura. Swing, in generale, è stato modellato fin dall'inizio sul pattern MVC (Model View Controller). Se non sai nulla di questo, non è un problema. Si può capire JTable anche senza avere nozioni esatte sul MVC. In sostanza il MVC è un pattern che descrive una architettura in cui ci sono entità (tre) ben distinte ciascuna con un preciso compito: il Model ("modello", che contiene dei dati), la View ("vista", che presenta i dati all'utente) e il Controller ("controllore" che riceve l'input dall'utente ed agisce di conseguenza).
In Swing, salvo alcuni componenti super-basilari come JLabel, per tutti gli altri componenti viene usata questa architettura in maniera completa. E JTable non è da meno. Ripeto che puoi ignorare un po' il MVC, non è importante. Quello che è importante è questo di seguito.
La cosa importante da sapere su JTable è che i dati NON sono contenuti direttamente nell'oggetto JTable. È un'altra entità che li contiene, che si chiama "table model" ed è rappresentata al livello più astratto da una interfaccia che si chiama appunto
TableModel.
All'interno di JTable c'è il riferimento ad un oggetto "visto" genericamente appunto tramite l'interfaccia TableModel. In qualunque modo arrivi a creare un JTable, alla fin fine c'è sotto sotto un table model implicito o esplicito che sia.
JTable non "sa" nulla a priori di come è fatta la tabella. Tutte le informazioni importanti sulla struttura della tabella le CHIEDE al table model. E l'obiettivo della interfaccia TableModel è appunto quello di "esporre" tutte queste informazioni. Se guardi la documentazione di TableModel (vedi ) trovi svariati metodi tra cui:
- getRowCount()
- getColumnCount()
- getColumnName(int columnIndex)
ecc...
Questi metodi servono appunto per descrivere come è fatta la tabella. Durante il ciclo di vita di JTable, esso chiede man mano e più volte queste informazioni al table model: "quante righe hai?" ( tm.getRowCount() ) ; "quante colonne hai?" ( tm.getColumnCount() ) ; "come si chiama la colonna indice 2?" ( tm.getColumnName(2) ) ecc...
Con queste nozioni JTable è in grado di renderizzare e strutturare visivamente la tabella. Quindi quando si vuole utilizzare JTable l'aspetto iniziale più importante è stabilire QUALE table model utilizzare. Come ho detto TableModel è una
interface Java. E ci possono essere quindi N implementazioni.
Fin qui è più chiaro?