PDA

View Full Version : [JAVA] Da Object richiamare la funzione JTextField.getText()


DjMix1988
11-07-2013, 17:53
Salve a tutti pongo questa domanda:

ho un Object che contienre una textfiel:

JtextField a = new JtextField();
Object o = a;

dall elemento "o" è possibile, senza rimetterlo all interno di un altro Jtextfield, richiamare solamente la funzione getText?

sembra una cosa bizarra ma volevo sapere se fosse possibile...

Praticamente da un oggetto vorrei sapere quale sia il tipo e richiamare la sua funzione.

ho letto qualcosa sulla reflections ma non ci ho capito un tubo... ho almeno ho più idee confuse al momento....

Se qualcuno potrebbe aiutarmi in questo mio problema gli sarei riconoscente a vita :)

DjMix1988
12-07-2013, 07:26
Up

Sent from my GT-N7100 using Tapatalk 4 Beta

ndakota
12-07-2013, 09:42
Castarlo e richiamare il metodo che ti serve senza metterlo in una variabile vale?

((JTextField)o).getText()

:stordita:

DjMix1988
12-07-2013, 09:46
l idea potrebbe anche funzionare pero questa operazione dovrebbe farla un file che non conosce le swing... io pensavo che nel caso esistesse un metodo che gli dicevo il nome della funzione , java lo ricavasse da solo per farla funzionare....

GByTe87
12-07-2013, 10:02
Devi usare la reflection:

http://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string

La prima risposta contiene praticamente lo snippet di codice che serve a te.

Permettimi di dire, ad ogni modo, che in questo caso l'uso della reflection mi sembra una 'pezza' usata per risolvere un problema di design. Per quale motivo la tua istanza di JTextField è castata ad object? Magari riusciamo a risolvere il problema in maniera più elegante.

DjMix1988
12-07-2013, 10:12
Praticamente ho una finestra, essa contiene un bottonw che dovrebbe aprire una specie di form contenente due jtextfield. Una volta riempiti i campi questi devono tornare alla finestra precedente e restituire il contenuto. Per fare quel popup uso joptionpane e gli elementi li recupero da una lista oggetti, che nel mio caso contene le texrfield. Insomma dalla schermata principale devo entrare in questa e lei deve restituire alla schermata principale le informazioni ricevute ovviamente ho un design pattern che mi avvia queste schermate. La schermata di popup non deve conoscere le swing all infuori del joptionpane. Spero di essere stato chiaro

mone.java
12-07-2013, 10:54
Usare la reflection è assai oneroso in questo caso e sopratutto è assolutamente inutile... il cast è la soluzione più "elegante"... E attenzione non è una questione di "mettere dentro":

JtextField a = new JtextField();
Object o = a;

o e a sono lo stesso oggetto visto in due maniere diverse... se vieni dal c diciamo che sono un puntatore allo stesso oggetto... sono che nel caso a tratto l'oggetto in questione come JTextField mentre in o lo tratti come Object... lo puoi fare perchè object è implicitamente superclasse di tutte le classi... infatti in a troverai tutti ii metodi di JTextField più tutti quelli di Object...

Son differenze importanti da capire! :read:

DjMix1988
12-07-2013, 10:57
E lo so ma di certo sono obbligato... questa finestra che esce grazie alla joptionpane non deve conoscere assolutamente il pacchetto swing ma solo joptionpane... ecco perche dicevo, se uso questo vettore, potrei richiamare i costruttori delle jtextfield da cosi utilizzare le sue funzionalità... ah ti ringrazio a priori per l aiuto che mi stai dando :)