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 - alle prese con i JTextField
Forum - Java - alle prese con i JTextField

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
zottiman (Normal User)
Pro


Messaggi: 121
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 23:21
Venerdì, 27/11/2009
Sono alle prime armi con il Java.. ho cominciato da poco, infatti lo vedrete dalla forma del mio codice..
Partiamo dal primo passo.. vorrei che quello che scrivo nei JTextField alla pressione del bottone aggiungi si salvino nella rispettive variabili che poi andranno scritte su un file XML quando imparerò a farlo.. adesso non salva nelle variabili e non capisco perchè...
potreste darmi una mano..

Codice sorgente - presumibilmente Java

  1. package Player;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Container;
  5. import java.awt.GridLayout;
  6. import java.awt.event.*;
  7.  
  8. import javax.swing.*;
  9.  
  10. public class Nuovo extends JFrame{
  11.         public Container        sfondo;
  12.         public JPanel       pannello;
  13.         public JTextField       url,
  14.                                                 artista,
  15.                                                 titolo;
  16.         public JButton          aggiungi;
  17.         public JLabel           lUrl,
  18.                                                 lArtista,
  19.                                                 lTitolo;
  20.  
  21.        
  22.         public Nuovo(){
  23.                 setSize(250,180);
  24.                 setTitle("Nuovo");
  25.                
  26.                 sfondo = getContentPane();
  27.                         pannello = new JPanel();
  28.                         pannello.setBackground(Color.white);
  29.                         pannello.setLayout(new GridLayout(7,1));
  30.                                 lUrl = new JLabel("URL : ");
  31.                                         url = new JTextField();
  32.                                         url.setEditable(true);
  33.                                 lArtista = new JLabel("ARTISTA : ");
  34.                                         artista = new JTextField();
  35.                                         artista.setEditable(true);
  36.                                 lTitolo = new JLabel("TITOLO : ");
  37.                                         titolo = new JTextField();
  38.                                         titolo.setEditable(true);
  39.                
  40.                 aggiungi = new JButton("Aggiungi");
  41.                 Ascoltatore ascoltatore = new Ascoltatore();
  42.                 aggiungi.addActionListener(ascoltatore);
  43.  
  44.  
  45.                         sfondo.add(pannello);
  46.                         pannello.add(lUrl);
  47.                         pannello.add(url);
  48.                         pannello.add(lArtista);
  49.                         pannello.add(artista);
  50.                         pannello.add(lTitolo);
  51.                         pannello.add(titolo);
  52.                         pannello.add(aggiungi);
  53.                         setVisible(true);
  54.         }
  55.        
  56.  
  57.  
  58.         public String getUrl() {
  59.                 String sUrl = url.getText();
  60.                 return sUrl;
  61.         }
  62.  
  63.         public String getArtista() {
  64.                 String sArtista = artista.getText();
  65.                 return sArtista;
  66.         }
  67.  
  68.         public String getTitolo() {
  69.                 String sTitolo = titolo.getText();
  70.                 return sTitolo;
  71.         }
  72.  
  73.         public class Ascoltatore implements ActionListener{
  74.                 public void actionPerformed(ActionEvent e) {
  75.                         Nuovo nuovo = new Nuovo();
  76.                        
  77.                         String comando = e.getActionCommand();
  78.                        
  79.                         if(comando.equals("Aggiungi")){
  80.                                 String url = nuovo.getUrl();
  81.                                 String titolo = nuovo.getTitolo();
  82.                                 String artista = nuovo.getArtista();
  83.                                 System.out.println("Aggiungi : " + url + titolo + artista);
  84.                         }
  85.                         else{System.out.println("Errore");};
  86.                        
  87.                 }
  88.         }
  89. }



è una parte del programma quindi qui manca il main...

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 11:52
Sabato, 28/11/2009
A prima occhiata direi che il problema sta nel fatto che crei un nuovo oggetto di tipo Nuovo nella classe listener.
Devi passare la stessa istanza su cui lavori.

PM Quote
Avatar
zottiman (Normal User)
Pro


Messaggi: 121
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 16:42
Sabato, 28/11/2009
Testo quotato

Postato originariamente da netarrow:
Devi passare la stessa istanza su cui lavori.



Cioè??

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 16:47
Sabato, 28/11/2009
quando avvii il programma crei un'istanza di Nuovo, quindi crei la finestra su cui gira il programma, se però poi appena viene intercettato un evento crei una nuova istanza  di Nuovo lavori su qualcosa di ex novo, e perdi lo stato precedente (quindi anche il contenuto delle field viene resettato).

quindi devi passare alla tua classe che fa da listener la stessa istanza di Nuovo che usi fin dall'inizio, oppure fai implementare il listener a Nuovo stessa potendo poi usare this ma sostanzialmente è la stessa cosa.

PM Quote
Avatar
zottiman (Normal User)
Pro


Messaggi: 121
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 16:52
Sabato, 28/11/2009
Testo quotato

Postato originariamente da netarrow:

quando avvii il programma crei un'istanza di Nuovo, quindi crei la finestra su cui gira il programma, se però poi appena viene intercettato un evento crei una nuova istanza  di Nuovo lavori su qualcosa di ex novo, e perdi lo stato precedente (quindi anche il contenuto delle field viene resettato).

quindi devi passare alla tua classe che fa da listener la stessa istanza di Nuovo che usi fin dall'inizio, oppure fai implementare il listener a Nuovo stessa potendo poi usare this ma sostanzialmente è la stessa cosa.


problema.. nn so come risolvere..

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 17:06
Sabato, 28/11/2009
ascoltatore deve essere così:

Codice sorgente - presumibilmente Java

  1. public class Ascoltatore implements ActionListener{
  2.                 private Nuovo nuovo;
  3.                
  4.                 Ascoltatore(Nuovo n) {
  5.                         this.nuovo = n; // passi ad Ascoltatore la stessa istanza che è sullo schermo
  6.                 }
  7.                
  8.         public void actionPerformed(ActionEvent e) {
  9.                         /*  sbagliato: esiste già un oggetto nuovo, se ne crei uno nuovo
  10.                          viene tutto resettato
  11.             Nuovo nuovo = new Nuovo();  <-
  12.                          */
  13.                        
  14.             String comando = e.getActionCommand();
  15.                        
  16.             if(comando.equals("Aggiungi")){
  17.                 String url = nuovo.getUrl();
  18.                 String titolo = nuovo.getTitolo();
  19.                 String artista = nuovo.getArtista();
  20.                 System.out.println("Aggiungi : " + url + " " + titolo + " " + artista);
  21.             }
  22.             else{System.out.println("Errore");};
  23.                        
  24.         }
  25.     }
  26. }



e lo istanzierai così:

Codice sorgente - presumibilmente Java

  1. ...
  2.         aggiungi = new JButton("Aggiungi");
  3.         /* con this ti riferisci all'istanza a cui in questo momento
  4.             si riferisce il codice della sua classe
  5.          */
  6.         Ascoltatore ascoltatore = new Ascoltatore(this);
  7.         aggiungi.addActionListener(ascoltatore);
  8. ...



Se non hai capito queste cose attento a non saltare pezzi e a seguire lentamente le basi di java e della OOP (basandoti su un buon libro).

PM Quote
Avatar
zottiman (Normal User)
Pro


Messaggi: 121
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 17:12
Sabato, 28/11/2009
Testo quotato

Postato originariamente da netarrow:
Se non hai capito queste cose attento a non saltare pezzi e a seguire lentamente le basi di java e della OOP (basandoti su un buon libro).



Grazie Mille... Come libro uso "Java: la programmazione ad oggetti" della loescher

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 17:20
Sabato, 28/11/2009
[Prima della ricerca con google]

Non lo conosco, sarà buono dai, riguardati la parte sull'istanziare gli oggetti e sui riferimenti.

[/Prima della ricerca con google]

[Dopo la ricerca con google]

Per le Scuole superiori: tutto più chiaro :D
Ti consiglio eventualmente:
http://gorilla.it/libri/programmazione-java-fondamenti-edi ...
[/Dopo la ricerca con google]

PM Quote
Avatar
zottiman (Normal User)
Pro


Messaggi: 121
Iscritto: 06/07/2009

Segnala al moderatore
Postato alle 17:36
Sabato, 28/11/2009
Testo quotato

Postato originariamente da netarrow:


Consiglio..
per salvarmi i dati è meglio che usi un xml o un database????
il più semplice???

scusa l':ot:

Ultima modifica effettuata da zottiman il 28/11/2009 alle 17:37
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo