Te l'ha spiegato Lele, tu dovresti salvare solo la parte relativa allo stato del gioco, non relativa all'interfaccia grafica.
Il modo in cui lo fai dipende esclusivamente dall'architettura delle classi che hai ideato che, come suggerisce Lele, dovresti molto probabilmente ripensare.
Ha senso infatti che in un linguaggio orientato agli oggetti i vari compiti della tua applicazione siano divisi tra varie classi, quindi la parte grafica e il gioco in sé dovrebbero essere modellati da classi diverse.
Per fare un esempio immagina che il tuo gioco siano gli scacchi: nulla ti impedisce di gestire tutto il programma con una singola classe: la parte grafica, le caselle della scacchiera, i pezzi, le mosse del giocatore e qualsiasi altra cosa ti venga in mente.
Ma tutto questo fa schifo, è molto incasinato,per niente mantenibile etc...!
Ciò che ha senso è ad esempio definire una classe Scacchiera, una classe Casella, una classe Pezzo che potrebbe avere volendo delle classi figlie che modellano i diversi tipi di pezzo etc...
In questo modo il frame dove fisicamente si sviluppa il gioco potrebbe avere una variabile di tipo Scacchiera di cui legge le posizioni, i pezzi mangiati, le mosse effettuate ... e le utilizza per creare/aggiornare l'interfaccia.
Quindi quando tu salvi una partita che poi vuoi riprendere salvi solo la scacchiera, poi quando carichi una partita rileggerai lo stato della scacchiera da file e poi la userai per ricomporre graficamente lo stato della partita al momento del salvataggio.