Quote Originariamente inviata da andbin Visualizza il messaggio
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.
Ciao grazie della risposta, sinceramente non ho capito la soluzione, poi per quanto riguardale mie basi non posso farci molto ho solo fatto ciò che mi è stato richiesto dal mio professore,e sono d'accordo che non sono il massimo; potresti spiegarmi in un modo differente ho cambiare le porzione di codice se hai voglia ?
ciao,
grazie