|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 107
|
[Java] setText di un JTextField privato
Come faccio a cambiare il testo di un JTextField dichiarato private (da un'altra classe ovviamente)?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12860
|
Non puoi a meno che non esponi un metodo per farlo nella classe che ti interessa.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi. Devi usare un'invocazione riflessiva. Prima di accedere al membro lo dichiari accessibile (setAccessible(true)). E' una funzione soggetta a restrizioni di sicurezza.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 107
|
Mi fai un esempio di codice per favore? Metti che il Jbutton si chiama "jButton1"
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12860
|
Non la sapevo questa cosa... ma come funziona esattamente? Vengono modificati effettivamente i diritti di accesso (da private a public, non credo) oppure viene usato un pattern particolare per modificare questa cosa a run time?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Vado a memoria:
Codice:
String testoDaImpostare = "qualcosa";
Class<?> classe = NomeClasseColCampo.class
Object x = istanzaDiClasse;
Field campo = classe.getDeclaredField("jButton1");
try {
campo.setAccessible(true);
campo.set(istanzaDiClasse, testoDaImpostare);
} catch(SecurityException ex) {
//log: le impostazioni di sicurezza non consentono l'accesso a membri privati.
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ps.: non che sia una bella cosa da fare, normalmente se un membro è privato c'è il suo bel motivo. Ma se si è proprio alle strette...
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jun 2007
Messaggi: 107
|
Molto interessante sta cosa... Per quello che devo fare è uno spreco di codice...tanto vale dichiararli public...ma mi tornerà utile... Grazie mille!
Ultima modifica di stefandre_nicari : 08-03-2010 alle 14:38. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Campo, pubblico? Brutto brutto brutto. Usa sempre un accessore (getter in javese).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2003
Città: London
Messaggi: 5988
|
Appunto se sei tu che stai scrivendo la classe contenente il JTextField perche` non crei un metodo per modificare il testo di quel campo nella tua classe?
__________________
|
|
|
|
|
|
#11 | ||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Considera che questa "tecnica" si usa (ad esempio) nello Unit Test, per testare i metodi privati di una classe dalla classe di test [c'è un topic relativo di qualche giorno fa al proposito]. Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quote:
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Non ci credo
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12860
|
In effetti non mi sembra una pratica di tutti i giorni, meglio un campo private e dichiarare i metodi di accesso (accessors
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:21.




















