Newsgroup: it.comp.java
Titolo: Sostituzione componenti di un'interfaccia

Ciao a tutti,
sono alle prese con un'interfaccia ed ho il seguente problema:
prendiamo ad esempio un semplice jpanel composto da un campo jtext ed un 
jbutton.
Quel che vorrei fare è, una volta clickato il pulsante,
far sparire il campo jtext e sostituirlo con una jlabel composta dal 
testo messo in input.
Questo rientra nell'ottica di un'interfaccia complessa, dove alcune 
parti di essa vengono man mano "validate", non sono più modificabili
e cambiano aspetto.
Il fatto è che non ho idea di come sostituire una componente ad un'altra.
Ho creato le compontenti che mi interessano, ho aggiunto il listener
che gestisce l'evento, faccio sparire il jtext ma come posso metterci
al posto un'altra componente?
oltretutto utilizzo netbeans ide per l'interfaccia, dovendo essere 
composta poi da molti elementi è importante che non si sposti tutto
a casaccio durante la sostituzione...
qualche suggerimento?
ps: sono un amatore...
Saluti
Alex


 si capisce da quello che scrivi....
l'interfaccia non cambia componenti, semmai cambi il comportamento del
componente, il textfield diventa non modificabile non diventa altra
cosa ...
compra un bel libro prima di Jakob Nielsen sull'usabilità e sulle
metafore delle interfacce utente...
Ciao Gianmarco

 al posto un'altra componente?
puoi agire sulle proprieta' della textbox rendendola non modificabile,
oppure puoi creare a runtime una label da inserire nella stessa
locazione (puoi ottenere la locazione della textbox leggendo le sue
proprieta') della textbox.
r.
PS: la prima mi pare migliore... :)

Gianmarco Vanni ha scritto:

Io non voglio un textfield non modificabile. Voglio metterci un'altra cosa.
Quello è solo un esempio. L'aspetto del textfield non modificabile è 
quello di una casella opaca e non è quello l'effetto che voglio ottenere.
Quello che voglio è invece una stringa di testo con un'altro font, 
colorata, ecc...
Mi interessa anche togliere bottoni e sostituirli con altre cose,
ecc...
Ho una decente formazione formale sulle basi dello swing e so di cosa 
parlo, ho anche in mente un paio di soluzioni ma che non sono la 
soluzione del problema ma solo un suo aggiramento...
Alex

ryuujin ha scritto:

ma a me interessa la seconda.
Atraverso il listener non ho problemi a creare
a runtime la component da inserire... è che non so
come sostituirla senza ricreare l'intero pannello.
Le componenti sono inserite in un layout (grouplayout
mi pare) il cui codice viene generato automaticamente dall'IDE.
Per far sparire il campo di testo è sufficiente renderlo invisibile,
ma come renderizzare un'altra componente li, aggiungerla al padre jpanel
attraverso il suo layout manager? è quello il problema!
Alex

Allora, cercherò di spiegarmi meglio perché non sono stato ben capito 
(ovviamente ringrazio cmq quanti mi abbiano risposto).
Un mio hobby è quello dei giochi di ruolo e voglio creare un generatore 
di personaggi.
L'interfaccia è composta da vari pannelli che contengono campi 
editabili, i cui contenuti si modificano reciprocamente.
L'idea è la seguente:
l'utente edita come preferisce una certa parte, la valida, questa viene
salvata, i pulsanti e caselle necessari alle modifiche spariscono e 
compaiono al loro posto le informazioni inerenti calcolate.
Ho buona conoscenza della programazzione oo ma non sono pratico delle 
interfacce alle quali non mi sono mai dedicato molto negli applicativi 
che ho realizzato in passato, quindi non mi sono molto chiari alcuni 
concetti come la serializzazione delle componenti, l'accessible context, 
o il concetto di Action. Sono in grado di creare e gestire 
un'interfaccia "semplice" (come la calcolatrice di windows per capirci) 
senza nessun problema, ma volendo avere un risultato al contempo 
piacevole a vedersi e facilmente fruibile da un utente su un sistema più 
complesso, composto da decine di caselle e pulsanti con forti 
interazioni reciproche mi mette un po in difficoltà :D
Alex

 interazioni reciproche mi mette un po in difficoltà :D
Se usi un CardLayout per gestire i componenti e cambi la "card" in cima al
mazzo a seconda dello stato (ossia di cosa ha fatto il tuo utente)?
Dovrebbe essere quello che cerchi.
Luca

Luca Ferrari ha scritto:

Direi... eureka... in effetti stavo cominciando a scrivere del codice 
che fa all'incirca la stessa cosa... grazie :)
Alex