Newsgroup: it.comp.java
Titolo: [Swing] Controllare frame in un JDesktopPane

Ciao a tutti, ho una curiosita' visto che proprio necessita' non e'.
Ho un JDesktopPane con diversi JInternalFrame all'interno. Ogni Frame ha un nome 
(titolo) ed ogni frame ha degli elementi che vanno aggiornati quando la mia app 
server decide che e' il momento di aggiornarli (non entro nel dettaglio).
La domanda e': qual'e' il modo migliore per recuperare un ben preciso frame di 
un desktopPane?
Al momento, recupero dal desktopPane la lista dei frame con getAllFrame che mi 
ritorna un array di JInternalFrame[]. dopodiche' ciclo sull'array fino a trovare 
quello che mi serve e come condizione uso il titolo (essendo questo univoco).
Non mi piace!
Esiste un metodo nascosto per fare cio'? credete che sia un buon metodo 
aggiungere una hashMap che mi tenga le associazioni [nomeFrame, Frame] per 
accedere ai Frame?
Ogni consiglio e' ben accetto.
Grazie 1000
Ciao
Co.

 frame di un desktopPane?
 > [...]
 > Ogni consiglio e' ben accetto.
Solo un'osservazione. Secondo me in una corretta implementazione del 
pattern MVC questo problema non dovrebbe porsi.
Mi spiego. Se ho ben capito si dovrebbe aggiornare qualcosa in qualche 
determinato internalframe in un dato momento ("quando la mia app server 
decide che e' il momento di aggiornarli").
Un procedimento migliore in questi casi sarebbe quello 
dell'Observer/Observable, ovvero il cambiamento del model viene 
percepito dagli ascoltatori di un dato evento (i componenti interessati 
al model dentro i vari frame) che si aggiornano di conseguenza.
Un esempio sul pattern in questione, nel caso non lo conosca:
http://sern.ucalgary.ca/courses/SENG/609.04/W98/lamsh/observerLib.html
Come vedi in questo caso non esiste il problema di "recuperare la 
finestra", e tutto il meccanismo lavora in modo più fluido e responsive 
senza bisogno di strutture dati particolari o robe varie.
HTH
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://www.sourceforge.net/projects/ammentos
http://ammentos.biobytes.it

 al model dentro i vari frame) che si aggiornano di conseguenza.
Mhhh si ma sono aggiornamenti specifici, cioe', il server mi manda un messaggio 
in cui c'e' l'identificativo del frame (che non e' il titolo ma un valore da cui 
posso risalire al frame giusto) e le modifiche da effettuare. quindi, se 
implementassi oserver, dovrei cmq fare un controllo per evitare che gli altri 
frame, che osservano il model, si aggiornino giusto?

 aggiornino giusto?
Beh la logica del pattern è proprio che ricevano l'evento solo gli 
ascoltatori interessati a riceverlo. Questo meccanismo si realizza in 
due fasi:
1) all'atto della registrazione, in cui l'Observer dichiara di essere 
interessato a ricevere eventi di un dato tipo (nel tuo caso il tipo 
potrebbe essere il valore che ora utilizzi per risalire al frame). 
L'Observable esegue la registrazione memorizzando il riferimento 
dell'Observer (per esempio in questo caso dentro una mappa la cui chiave 
è il valore di interesse)
2) Al momento della notifica, quando l'Observable, generato l'evento, 
recupera i riferimenti a tutti gli Observer regsistrati su quel tipo di 
evento.


 pole
Ok, pero' essendo ogni frame a se stante, non e' possibile che piu' frame siano 
registrati allo stesso evento. Ad ogni evento deve rispondere uno ed un solo 
frame. cioe' dovrei tenere un model ed una coppia oserver/observable per ogni 
frame, o cmq un mappaggio evento-observer, e quindi mi sembra di non avere 
vantaggi se non quello che sto implementando un pattern (cmq una buona cosa).

 che sto implementando un pattern (cmq una buona cosa).
Beh a questo punto fai un po' come vuoi :)
Avevi chiesto un consiglio per un'implementazione pulita e ti ho 
suggerito, tra i metodi possibili, uno tra i piů famosi, usati e testati.
Poi non č mica detto che ti debba per forza piacere... ;-)


 pole
non ho detto che non mi piace, anzi probabilmente e' cosi' che modifichero' il 
prog se avro' tempo, era solo per "capire se avevo capito" che in questo caso 
particolare non si ha un vero e proprio vantaggio se non da un punto di vista 
stilistico... tutto qui!