La variabile i nell'istruzione
giocatore.getCarta(i);
all'interno della calsse interna che implementa il listener del pulsante è illegale perche accede ad una varaible che non è final: se quel listener non fosse implementato tramite classe interna ma come una normale classe non avrebbe alcuna visibilità della variabile i; se ti serve quella variabile non puoi usare una clase interna ma devi impelmentare il listener a parte con un costruttore che prende la variabile i come argomento.