Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Problema con le variabili
Forum - Java - Problema con le variabili

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Fr4nk94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 07/04/2010

Segnala al moderatore
Postato alle 16:42
Sabato, 21/08/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

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 16:03
Domenica, 22/08/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 :k:

PM
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 17:56
Sabato, 21/08/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
PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 21:36
Sabato, 21/08/2010
O meglio ancora una classe anonima...

PM
Avatar
Fr4nk94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 07/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 11:59
Domenica, 22/08/2010
Testo quotato

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...

PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 12:02
Domenica, 22/08/2010
Secondo me è più facile creare una classe anonima nel frame, in questo modo hai accesso a tutte le variabili...

PM
Avatar
Fr4nk94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 07/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 13:26
Domenica, 22/08/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

  1. public class Login
  2. {
  3. public static void main(String[] args)
  4. {
  5. Frame f = new Frame("LogIn");
  6. Panel p1 = new Panel();
  7. Panel p2 = new Panel();
  8. TextField tf1 = new TextField(20);
  9. TextField tf2 = new TextField(20);
  10. Label l1 = new Label("Nickname:");
  11. Label l2 = new Label("Password:");
  12. Button b = new Button("SALVA");
  13. p1.add(l1);
  14. p1.add(tf1);
  15. p2.add(l2);
  16. p2.add(tf2);
  17. f.add(p1,BorderLayout.NORTH);
  18. f.add(p2,BorderLayout.CENTER);
  19. f.add(b,BorderLayout.SOUTH);
  20. f.addWindowListener(new chiudi());
  21. b.addMouseListener(new ascoltaclick());
  22. f.setBounds(100,100,350,150);
  23. f.setVisible(true);
  24. }
  25. }
  26.  
  27. class ascoltaclick extends MouseAdapter
  28. {
  29. public void mouseClciked(MouseEvent e)
  30. {
  31. try
  32. {
  33. FileOutputStream prova = new FileOutputStream("prova.txt");
  34. PrintStream scrivi = new PrintStream(prova);
  35. scrivi.print(???.getText + ???.getText);
  36. System.out.println("Ho scritto sul file");
  37. }
  38. catch(IOException er)
  39. {
  40. System.out.println("Errore:"+er);
  41. System.exit(1);
  42. }
  43. }
  44. }


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
PM
Avatar
nihal (Ex-Member)
Pro


Messaggi: 109
Iscritto: 12/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 14:09
Domenica, 22/08/2010
Si fa così:
Codice sorgente - presumibilmente Java

  1. public class Login
  2. {
  3. public static void main(String[] args)
  4. {
  5. Frame f = new Frame("LogIn");
  6. Panel p1 = new Panel();
  7. Panel p2 = new Panel();
  8. TextField tf1 = new TextField(20);
  9. TextField tf2 = new TextField(20);
  10. Label l1 = new Label("Nickname:");
  11. Label l2 = new Label("Password:");
  12. Button b = new Button("SALVA");
  13. p1.add(l1);
  14. p1.add(tf1);
  15. p2.add(l2);
  16. p2.add(tf2);
  17. f.add(p1,BorderLayout.NORTH);
  18. f.add(p2,BorderLayout.CENTER);
  19. f.add(b,BorderLayout.SOUTH);
  20. f.addWindowListener(new chiudi());
  21. b.addMouseListener(new MouseListener(){
  22. /* codice della classe ascoltaclick in cui puoi usare i reference tf1 e tf2
  23.     */
  24. });
  25. f.setBounds(100,100,350,150);
  26. f.setVisible(true);
  27. }
  28. }


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...

PM
Avatar
Fr4nk94 (Normal User)
Rookie


Messaggi: 29
Iscritto: 07/04/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:31
Domenica, 22/08/2010
grazie mille! Ora ho capito... Praticamente specifico direttamente il metodo quando dichiaro l'ascoltatore

PM
Pagine: [ 1 2 ] Precedente | Prossimo