Oppure

Loading
27/11/09 22:21
zottiman
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..

package Player;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.*;

import javax.swing.*;

public class Nuovo extends JFrame{
	public Container 	sfondo; 
	public JPanel       pannello;
	public JTextField 	url,
						artista,
						titolo;
	public JButton		aggiungi;
	public JLabel 		lUrl,
						lArtista,
						lTitolo;

	
	public Nuovo(){
		setSize(250,180);
		setTitle("Nuovo");
		
		sfondo = getContentPane();
			pannello = new JPanel();
			pannello.setBackground(Color.white);
			pannello.setLayout(new GridLayout(7,1));
				lUrl = new JLabel("URL : ");
					url = new JTextField();
					url.setEditable(true);
				lArtista = new JLabel("ARTISTA : ");
					artista = new JTextField();
					artista.setEditable(true);
				lTitolo = new JLabel("TITOLO : ");
					titolo = new JTextField();
					titolo.setEditable(true);
		
		aggiungi = new JButton("Aggiungi");
		Ascoltatore ascoltatore = new Ascoltatore(); 
		aggiungi.addActionListener(ascoltatore);


			sfondo.add(pannello);
			pannello.add(lUrl);
			pannello.add(url);
			pannello.add(lArtista);
			pannello.add(artista);
			pannello.add(lTitolo);
			pannello.add(titolo);
			pannello.add(aggiungi);
			setVisible(true);
	}
	


	public String getUrl() {
		String sUrl = url.getText();
		return sUrl;
	}

	public String getArtista() {
		String sArtista = artista.getText();
		return sArtista;
	}

	public String getTitolo() {
		String sTitolo = titolo.getText();
		return sTitolo;
	}

	public class Ascoltatore implements ActionListener{
		public void actionPerformed(ActionEvent e) {
			Nuovo nuovo = new Nuovo();
			
			String comando = e.getActionCommand();
			
			if(comando.equals("Aggiungi")){
				String url = nuovo.getUrl();
				String titolo = nuovo.getTitolo();
				String artista = nuovo.getArtista();
				System.out.println("Aggiungi : " + url + titolo + artista);
			}
			else{System.out.println("Errore");};
			
		}
	}
}


è una parte del programma quindi qui manca il main...
aaa
28/11/09 10:52
netarrow
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.
aaa
28/11/09 15:42
zottiman
Postato originariamente da netarrow:
Devi passare la stessa istanza su cui lavori.


Cioè??
aaa
28/11/09 15:47
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.
aaa
28/11/09 15:52
zottiman
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..
aaa
28/11/09 16:06
netarrow
ascoltatore deve essere così:

public class Ascoltatore implements ActionListener{ 
		private Nuovo nuovo;
		
		Ascoltatore(Nuovo n) {
			this.nuovo = n; // passi ad Ascoltatore la stessa istanza che è sullo schermo
		}
		
        public void actionPerformed(ActionEvent e) { 
			/*  sbagliato: esiste già un oggetto nuovo, se ne crei uno nuovo
			 viene tutto resettato
            Nuovo nuovo = new Nuovo();  <-
			 */
			
            String comando = e.getActionCommand(); 
			
            if(comando.equals("Aggiungi")){ 
                String url = nuovo.getUrl(); 
                String titolo = nuovo.getTitolo(); 
                String artista = nuovo.getArtista(); 
                System.out.println("Aggiungi : " + url + " " + titolo + " " + artista); 
            } 
            else{System.out.println("Errore");}; 
			
        } 
    } 
} 


e lo istanzierai così:

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


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).
aaa
28/11/09 16:12
zottiman
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
aaa
28/11/09 16:20
netarrow
[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:
gorilla.it/libri/programmazione-java-fondamenti-edizione-deitel/…
[/Dopo la ricerca con google]
aaa