Scusami ancora se ti disturbo ma mi spiego meglio.
Io ho 3 classi, una classe agenzia dove ho una listaViaggi e una listaClienti
Poi la classe Cliente con attributi: nome, cognome, codice fiscale e una lista di viaggi
La classe Viaggio con Data e Luogo.
Nella classe Agenzia,ho aggiunto il metodo per contare quanti viaggi sono stati fatti in una determinata localita, in questo modo:
public Map<String,Integer> getConteggioViaggiPerLuoghi() {
Map<String,Integer> mappaConteggi = new HashMap<String,Integer>();
for (Viaggio viaggio : listaViaggi) {
String luogo = viaggio.getLuogoViaggio();
Integer conteggio = mappaConteggi.get(luogo);
mappaConteggi.put(luogo, conteggio == null ? 1 : conteggio+1);
}
return mappaConteggi;
}
Ora vorrei che cliccando su un pulsante mi si aprisse una nuova jDialog con una tabella e con scritto ad esempio:
Luogo Viaggio| Numero Viaggi
Parigi | 2
Berlino | 3
e cosi via.
Il miei dubbi sono:
Come imposto il modelloTabella ?
nella JDialog dove visualizzo la tabella con i dati come scrivo il metodo che inizializza la tabella?
io avevo pensato a questo:
private void inizializzaTabellaContaViaggi() {
Agenzia agenzia = (Agenzia) this.vista.getModello().getBean(Costanti.AGENZIA);
if ( agenzia == null ) {
this.visualizzaFinestraErrore(" Errore inizializzazione ----Non è stato possibile inizializzare la Tabella");
}else{
ModelloTabellaContaViaggi mtcv = new ModelloTabellaContaViaggi(agenzia);
this.tabellaContaViaggi.setModel((TableModel)mtcv);
this.scrollTabellaContaViaggi.setViewportView(tabellaContaViaggi);
}
}
Mentre il modelloTabella in questo modo:
public class ModelloTabellaContaViaggi extends AbstractTableModel {
private Agenzia agenzia;
private List<Agenzia> listaConteggioPerLuogo;
public ModelloTabellaContaViaggi(Agenzia agenzia) {
this.agenzia = agenzia;
}
public int getRowCount() {
return // qui come faccio a sapere qual'è la lunghezza della lista?
}
public int getColumnCount() {
return 2;
}
public Object getValueAt(int r, int c) {
Agenzia agenzia = listaConteggioPerLuogo.get(r);
if (c == 0) {
return // come faccio a dirgli che deve darmi il nome del luogo?
} else if (c == 1) {
return // stesso problema con il numero dei viaggi effettuati verso quel luogo
}
return null;
}
@Override
public String getColumnName(int c) {
if (c == 0) {
return "Luogo Avvistamento";
}else if (c == 1) {
return "Numero Avvistamenti";
}
return null;
}
Ecco quello che ti chiedo è possibile fare quello che voglio in questo modo o mi servono altri metodi?
P.s. spero di essere stato più chiaro questa volta.