Quote Originariamente inviata da frakkio11299 Visualizza il messaggio
solo che mi da un errore nel codice e non so come risolverlo
lerrore e in questa istruzione:
codice:
auto auto1=new auto(bottone1,y[0]);
Le variabili y e bottone1/bottone2/bottone3/bottone4 sono "locali" al costruttore e stai cercando di usarle all'interno di una anonymous inner class dentro il costruttore. Ci sono delle regole. Prima di Java 8 queste variabili DEVONO essere final. Da Java 8 è stato introdotto il concetto di "effectively final" che rende non necessario il final, a patto che il compilatore deduca che la variabile non viene modificata successivamente alla inizializzazione.

La variabile y non viene modificata successivamente (vengono settati gli elementi dopo, ma non la variabile y in sé), quindi in Java 8 NON è necessario che sia final.
Il problema sono le variabili dei button. Non sono "effectively final" (perché le assegni dopo la inizializzazione a null) e NON possono essere final (proprio perché c'è l'assegnamento).

Soluzione: tieni le variabili dei pulsanti come variabili "di istanza", non locali al costruttore.


P.S. il resto comunque NON è buono. Tanto per dirne una: l'accesso ai componenti e alla interfaccia grafica va fatto (salvo casi particolari e documentati) solo nel contesto del Event Dispatch Thread. Mentre tu stai accedendo e modificando i pulsanti anche dal run() dei thread a parte. Questo è inappropriato. Quindi servono anche le "basi" su questi argomenti.