update:
ho testato con un po' di echo ed ho scoperto che il valore del campo viene reinizializzato ogni volta con il suo valore di default alla fine della chiamata della funzione che lo modifica. quindi non è che non funzioni, è che il valore cambia così velocemente che non me ne ero accorto prima.

nuova domanda quindi: come fare a fargli mantenere il valore? ho provato lasciandogli un "riferimento", cioè copiando il valore da impostare in una variabile contenuta nella classe dove sono scritte le specifiche della gui e del main. in questo modo sono sicuro che il valore non si perda. come mai non lo mantiene però?