PDA

Visualizza versione completa : Java problema "refresh" form in j2me



djdedo
11-08-10, 16: 05
Ciao ragazzi, sto avendo un problema con una form dove visualizzo una lista e dei comandi. Questa lista contiene degli indirizzi mail. In pratica io ho la mia funzione che mi crea la lista e la inserisce nel form e lo fa vedere, ogni funzione per gestire questa lista richiama alla fine la funzione per ricrearla. Con le funzioni per aggiungere e modificare un elemento nessun problema, mentre con la cancellazione di un elemento o tutti il form non viene "aggiornato" lasciandolo invariato. Non so se mi sono spiegato :tong2
La funzione per creare il form è questa

Only registered members can view code.

Per le funzioni grafiche non uso quelle di sistema canoniche ma una libreria chiamata LWUIT. Se non è chiaro qualcosa chiedete pure :bai

Andy86
14-08-10, 17: 58
Sarò diventato cieco :hap, ma non vedo i metodi che chiami nell'"action perfomed".
Ricorda che più codice posti, più è facile capire dove sta il problema.

Se ho capito bene, quando cancelli, le voci cancellate non sparisco finché non usi un altro comando, giusto?

LWUIT non la conosco, ma, da come l'hai descritto, sembra un semplice problema di "repaint();".

Prova a metterlo nelle azioni che non effettuano modifiche... :boh

:bai

djdedo
14-08-10, 20: 43
Ciao, i metodi non li ho messi in quanto si occupano solo di modificare un recordstore, non credo siano importanti. Comunque appena ho il codice davanti lo posto lo stesso, non si sa mai :tong2
Si io pure credo sia un problema di repaint(), ho provato ad inserirlo prima di
Only registered members can view code.
non ricordo se il metodo si chiamasse paint() o repaint().
Non ho capito dove dovrei avresti intenzione di inserire il metodo repaint() :bgg2

Andy86
14-08-10, 21: 24
non ricordo se il metodo si chiamasse paint() o repaint().

paint(Graphics g) contiene le istruzioni per il disegno e può essere riscritto per personalizzare l'aspetto del componente, chiamando super.paint(g) per non perdere il disegno originale.

repaint() chiama in automatico il metodo paint(Graphics g) dopo aver cancellato lo schermo.

paint() senza parametri non l'ho mai sentito.



si occupano solo di modificare un recordstore

Quindi tu aggiorni un recordstore in base alle azioni eseguite dall'utente e poi lo "stampi" in una list con il metodo listaProfili(), giusto?

In altre parole: il metodo che hai postato si occupa di creare un list con i dati contenuti nel recorstore, giusto?

Scusa, ma nel codice che hai postato non ci sono //commenti e alcune variabili non vedo di che tipo sono, quindi è un po' difficile capire.

Se è così, richiami il listaProfili() ogni volta che aggiorni il recordStore?



Non ho capito dove dovrei avresti intenzione di inserire il metodo repaint() :bgg2

Solo ora ricordo che le sottoclassi di screen si ridisegnano automaticamente e non hanno il metodo repaint() ... :ehmm

Per la cronaca, dovresti metterlo ogni volta che modifichi ciò che vuoi disegnare, cosicché venga disegnato nel nuovo modo.

:bai

djdedo
14-08-10, 22: 11
Hai ragione per i commenti, purtroppo ho questo viziaccio di non commentare, a volte mi perdo pure da solo :ehmm
Comunque in linea generale listaProfili() si occupa appunto di visualizzare a video il contenuto di recordstore come ti dicevo, e viene richiamato in ogni funzione che si occupa della modifica di questo recordstore (aggiunta, modifica, cancellazione di un record oppure cancellazione totale). Per questo non ho utilizzato il repaint(). Infatti sia con l'aggiunta che con la modifica tutto funziona a meraviglia, stranamente solo con le funzioni di cancellazione non va. Pensavo magari fosse un bug dell'emulatore invece provando su un cellulare non andava lo stesso. Appena rientro a casa posto il codice delle varie funzioni per completezza

djdedo
15-08-10, 03: 56
Come promesso posto un pò di altro codice :bgg2
Questo è il metodo che si occupa di permettere all'utente di inserire un nuovo dato nel recordstore (un indirizzo email)

Only registered members can view code.
con questo metodo e quello della modifica tutto funziona bene, mi viene visualizzata la lista con le modifiche effettuate (quindi sia aggiunta che modifica di un indirizzo)

Questo invece si occupa di eliminare un determinato indirizzo

Only registered members can view code.

e questo di eliminare tutti gli indirizzi presenti nel recordstore

Only registered members can view code.

Io sinceramente non riesco a capire :triste

djdedo
30-08-10, 14: 06
Ragazzi ho capito cos'era che mi faceva andare in palla la grafica. Il tutto era dovuto ai dialog delle procedure di cancellazione sia totale che di un elemento. Era l'unica cosa che i metodi di inserimento e modifica non avevano, al contrario loro avevano dei form. Ho provato a togliere i dialog ed infatti tutto funzionava a meraviglia. Ora ho sostituito i dialog con dei form e visualizzo quelli e tutto funziona come dovrebbe :hap