Fr4nk94 (Normal User)
Rookie
Messaggi: 29
Iscritto: 07/04/2010
|
ciao a tutti... Allora io vorrei assegnare ad una variabile un textfield, che si trova però in un'altra classe rispetto alla variabile. Cioè ho una classe in cui creo una finestra con un textfield e un bottone, poi aggiungo un ascoltatore per il mouse e quando vado a scrivere il codice per l'ascoltatore avrei bisogno di richiamare il textfield (io avevo pensato di assegnarlo ad una variabile...) ma non so come fare...Grazie in anticipo
|
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Praticamente con "new MouseListener()" crei e istanzi una classe che implementa l'interfaccia MouseListener, e di conseguenza devi scrivere il metodo mouseClicked... In questo modo ogni evento ha il suo ascoltatore
|
|
paoloricciuti (Ex-Member)
Pro
Messaggi: 137
Iscritto: 27/04/2010
|
Beh nel costruttore dell'ascoltatore fatti passare il JTextField su cui devi lavorare e lo salvi come variabile di istanza dell'ascoltatore.
EDIT PER: oppure puoi creare una inner class all'interno del frame (classe interna)
Ultima modifica effettuata da paoloricciuti il 21/08/2010 alle 18:05 |
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
O meglio ancora una classe anonima...
|
|
Fr4nk94 (Normal User)
Rookie
Messaggi: 29
Iscritto: 07/04/2010
|
Postato originariamente da paoloricciuti:
Beh nel costruttore dell'ascoltatore fatti passare il JTextField su cui devi lavorare e lo salvi come variabile di istanza dell'ascoltatore.
|
beh è proprio quello che volevo fare, solo che non sono capace... e cmq preciso che sto semplicemente usando la classe Frame non JFrame, perciò non ho un JTextField ma un semplice TextField... |
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Secondo me è più facile creare una classe anonima nel frame, in questo modo hai accesso a tutte le variabili...
|
|
Fr4nk94 (Normal User)
Rookie
Messaggi: 29
Iscritto: 07/04/2010
|
ok... e come faccio a creare una classe anonima? (ho cercato con google ma non ho capito benissimo)
Vi posto comunque la parte del codice interessata:
Codice sorgente - presumibilmente Java |
public class Login { public static void main (String[] args ) { p1.add(l1); p1.add(tf1); p2.add(l2); p2.add(tf2); f.addWindowListener(new chiudi()); b.addMouseListener(new ascoltaclick()); f.setBounds(100,100,350,150); f.setVisible(true); } } { { try { scrivi.print(???.getText + ???.getText); System. out. println("Ho scritto sul file"); } { System. out. println("Errore:"+er ); } } }
|
Ho messo dei punti di domanda dove devo inserire il riferimento ai TextField (rispettivamente tf1 e tf2)...
Ultima modifica effettuata da Fr4nk94 il 22/08/2010 alle 13:57 |
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Si fa così:
Codice sorgente - presumibilmente Java |
public class Login { public static void main (String[] args ) { p1.add(l1); p1.add(tf1); p2.add(l2); p2.add(tf2); f.addWindowListener(new chiudi()); /* codice della classe ascoltaclick in cui puoi usare i reference tf1 e tf2 */ }); f.setBounds(100,100,350,150); f.setVisible(true); } }
|
Le classi anonime sono state implementate proprio per semplificare la gestione degli eventi nelle GUI, e nonostante la sintassi non convenzionale una volta che ci si è abituati è difficile farne a meno...
|
|
Fr4nk94 (Normal User)
Rookie
Messaggi: 29
Iscritto: 07/04/2010
|
grazie mille! Ora ho capito... Praticamente specifico direttamente il metodo quando dichiaro l'ascoltatore
|
|