Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515

    javafx problemi nella visualizzazione del database

    ciao a tutti!!
    in javafx non riesco a visualizzare bene nella listView il nome che ho inserito nel database.

    cioè se inserisco il nome beppe mi visualizza Persone@34563

    questo è il codice:

    codice:
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root", "root");
    			ps = conn.prepareStatement("select * from persone");
    			rs = ps.executeQuery();
    			Persone persone = new Persone();	
    			ListView<Persone> list = new ListView<Persone>();
    			//persone = list.getSelectionModel().getSelectedItem();
                ObservableList<Persone> items =FXCollections.observableArrayList(persone);              
                while(rs.next()){             	
                	System.out.println(rs.getString("nome"));         	
                	persone.setNome(rs.getString("nome"));
                } 
                list.setItems(items);
    in (System.out.println) mi visualizza bene il nome che ho inserito mentre in persone no...

    dove sbaglio?



    help!! è da 3 giorni che stò impazzendo!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paul78 Visualizza il messaggio
    cioè se inserisco il nome beppe mi visualizza Persone@34563
    Non conosco e non uso JavaFX ma la problematica qui è molto più generale. Se la visualizzazione della lista porta alla invocazione implicita di toString() sugli oggetti Persone, il fatto di vedere Persone@34563 è semplicemente perché non è stato ridefinito un toString() nella classe Persone (che dovresti quindi fare tu). Pertanto rimane il toString() ereditato da Object che è in grado di fornire solo quella forma particolare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ciao grazie della risposta...

    nella classe Persone ho scritto questo:
    codice:
    public class Persone {
    
    
        //private static final Random random = new Random(System.currentTimeMillis());
    
    
        private int id;
        private String nome;
        private String cognome;
    
    
        public Persone() {
            this.id = id;
            this.nome = "";
            this.cognome = "";
        }
    
    
        public Persone(int id, String nome, String cognome) {
    
    
            this.id = id;
            this.nome = nome;
            this.cognome = cognome;
            
        }
        public int id() {
            return id;
        }
        public void setID(int id) {
            this.id = id;
        }
    
    
        public String getNome() {
            return nome;
        }
        public void setNome(String nome) {
            this.nome = nome;
        }
    
    
        public String getCognome() {
            return cognome;
        }
        public void setCognome(String cognome) {
            this.cognome = cognome;
        }
    }
    Ultima modifica di MItaly; 01-05-2014 a 18:10

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paul78 Visualizza il messaggio
    nella classe Persone ho scritto questo:
    Basta che aggiungi:

    codice:
    public String toString() {
        return getNome() + " " + getCognome();
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    grazie mille
    finalmente ho risolto...

    ora devo solo inserire un ciclo for per selezionare tutti i nomi inseriti perchè mi va a visualizzare solo l'ultimo nome inserito.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paul78 Visualizza il messaggio
    codice:
    rs = ps.executeQuery();
    Persone persone = new Persone();	
    ListView<Persone> list = new ListView<Persone>();
    //persone = list.getSelectionModel().getSelectedItem();
    ObservableList<Persone> items =FXCollections.observableArrayList(persone);              
    while(rs.next()){             	
        System.out.println(rs.getString("nome"));         	
        persone.setNome(rs.getString("nome"));
    } 
    list.setItems(items);
    ora devo solo inserire un ciclo for per selezionare tutti i nomi inseriti perchè mi va a visualizzare solo l'ultimo nome inserito.
    Non avevo visto prima bene il tuo codice sopra .... è anche sbagliato concettualmente. Perché istanzi un solo oggetto Persone fuori dal ciclo while.

    Non devi fare un ciclo for .... il ciclo l'hai già fatto, è quel while su rs.next(). Il punto è che nel ciclo, per ciascun record, devi istanziare un oggetto Persone, impostare le sue proprietà (dai dati del record corrente) e poi aggiungerlo a (spero di non sbagliare, non conosco JavaFX) quel ObservableList.

    In sostanza:

    codice:
    while (rs.next()) {
        Persone persone = new Persone();
    
        // imposta proprietà dell'oggetto (da rs)
        // aggiungi al ObservableList<Persone> items
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ...infatti hai ragione...

    ma come faccio a visualizzarlo in listView??

  8. #8
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    ho provato a riscriverlo in questo modo ma mi da sempre solo l'ultimo nome inserito.

    questo è il cod.:
    codice:
                while(rs.next()){ 
                	persone = new Persone();            	
                    System.out.println(rs.getString("nome")); 
                    persone.setNome(rs.getString("nome"));
                    
                    
                }              
                ObservableList<Persone>items =FXCollections.observableArrayList(persone);
                ListView<Persone> list = new ListView<Persone>(items);         
                list.setItems(items);
    Ultima modifica di MItaly; 01-05-2014 a 18:10

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da paul78 Visualizza il messaggio
    while(rs.next()){
    persone = new Persone();
    System.out.println(rs.getString("nome"));
    persone.setNome(rs.getString("nome"));


    }
    ObservableList<Persone>items =FXCollections.observableArrayList(persone);
    ListView<Persone> list = new ListView<Persone>(items);
    list.setItems(items);
    Per ciascun record devi creare un oggetto Persone (lo fai) e lo devi aggiungere a ObservableList<Persone>. Quindi ObservableList<Persone> lo devi istanziare prima del while e poi dentro il ciclo usare es. add (verifica dalla documentazione che cosa offre).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it L'avatar di paul78
    Registrato dal
    Apr 2010
    Messaggi
    515
    non ti preoccupare...mi sei stato di grande aiuto!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.