Salve a tutti, ho un paio di domande che mi ronzano in testa, spero possiate aiutarmi 
In una parte dell'applicazione che sto sviluppando l'utente può vedere in una JTable tutte le partite salvate in una determinata cartella.
Alla classe che crea e mostra la tabella viene passato come parametro un ArrayList<Game>.
La classe Game ovviamente rappresenta una singola partita,sotto posto il codice.
Adesso vorrei implementare la possibilità di ordinare la tabella in base a ciascuna colonna, in ordine crescente e decrescente.
Vorrei quindi qualche consiglio su come gestire l'ordinamento.
In primo luogo, visto che sto memorizzando le partite in un ArrayList, avevo intenzione di utilizzare Collections.sort() per ordinare le partite.
Game dovrebbe quindi estendere Comparable<Game> e aver definito il metodo compareTo(Game g).
All'interno del compareTo deve essere conoscibile la colonna su cui voglio eseguire l'ordinamento e se l'ordinamento sia crescente o decrescente.
Avevo quindi intenzione di memorizzare queste due informazioni con due variabili statiche e scrivere il tutto in questo modo:
codice:
import java.util.ArrayList;
public class Game implements Comparable<Game>
{
boolean seen;
ArrayList<String> moves;
String white="",black="",whiteRank="",blackRank="",type="",result="",date="",comment="",path="";
static boolean ascending=true;
static int sort=0;
//.... altri metodi
public int compareTo(Game g)
{
if(sort==0&&ascending)return path.compareTo(g.path);
else if(sort==0)return g.path.compareTo(path);
else if(sort==1&&ascending)return date.compareTo(g.date);
else if(sort==1)return g.date.compareTo(date);
else if(sort==2&&ascending)return white.compareTo(g.white);
else if(sort==2)return g.white.compareTo(white);
else if(sort==3&&ascending)return black.compareTo(g.black);
else if(sort==3)return g.black.compareTo(black);
else if(sort==4&&ascending)return whiteRank.compareTo(g.whiteRank);
else if(sort==4)return g.whiteRank.compareTo(whiteRank);
else if(sort==5&&ascending)return blackRank.compareTo(g.blackRank);
else if(sort==5)return g.blackRank.compareTo(blackRank);
else if(sort==6&&ascending)return type.compareTo(g.type);
else if(sort==6)return g.type.compareTo(type);
else if(sort==7&&ascending)return comment.compareTo(g.comment);
else return g.comment.compareTo(comment);
}
}
Può andare bene il metodo di ordinamento? Il tutto è molto corposo ma del resto voglio fornire molti tipi di ordinamento...
Accetto volentieri consigli su questa parte, anche su come memorizzare la colonna e il tipo di ordinamento, che al momento pensavo di impostare dall'esterno,modificando le variabili statiche sort e ascending.
La seconda cosa che volevo chiedere è questa: durante il caricamento delle partite, in un thread separato, aggiorno una JProgressBar in base al numero di file letti e numero di file totali.
Volevo fare una cosa simile durante l'ordinamento delle partite, c'è un modo carino per sapere quanto durerà il processo o sono costretto a usare la modalità indeterminata della barra?
Grazie dell'aiuto