Come utilizzare una arralist in un elenco

di il
7 risposte

Come utilizzare una arralist in un elenco

Ho una form che deve visualizzare il contenuto di una tabella.

Domanda preliminare: è meglio usare il componente JList o JTable ?

Ho fatto un metodo che effettua la lettura della tabella e salva i recordset della tabella in un arrayList.
Come posso ora "Agganciare" la arrayListalla Jlist o alla JTable ?

allego il codice del metodo

   private void creaListaAnadip()
    {
        conn =  ConnOleDb(connString);
       
               try
        {
                st = conn.createStatement();
               
                strsql = "Select * from Anadip";
                pst = conn.prepareStatement(strsql);
                rs=pst.executeQuery();
                while (rs.next())
                      listaAnadip.add(new Anadip(Long.parseLong(rs.getString("matricola")),
                                               rs.getString("cognome"),
                                               rs.getString("nome"),
                                               rs.getString("username"),
                                               rs.getString("password")));

                rs.close();
                rs = null;
                st.close();
                st = null;
                conn.close();
                conn = null;   
  
              //  qui dovrei legare la lista al controllo
              
                
                
                
                
        }
               catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,  e);
           // System.out.println("Errore generico in Connessione");
        } 
   } 
        
   
 


Grazie

Moreno

7 Risposte

  • Re: Come utilizzare una arralist in un elenco

    misonsan ha scritto:


    Ho una form che deve visualizzare il contenuto di una tabella.

    Domanda preliminare: è meglio usare il componente JList o JTable ?
    JTable

    misonsan ha scritto:


    Ho fatto un metodo che effettua la lettura della tabella e salva i recordset della tabella in un arrayList.
    Come posso ora "Agganciare" la arrayListalla Jlist o alla JTable ?
    Devi conoscere come funziona JTable, che non è banalissimo. JTable non contiene direttamente i dati, è invece un'altra entità chiamata "table model" (descritta a livello astratto dalla interfaccia TableModel) che contiene ed "espone" i dati.
    Inoltre JTable per la renderizzazione ed editazione delle celle si basa su due altre entità: table cell renderer e table cell editor (anche per queste c'è una interfaccia apposita).

    Capisco che non è facile ma puoi iniziare a leggere dal tutorial ufficiale: How to Use Tables

    Per qualunque dubbio .. chiedi!

    misonsan ha scritto:


    allego il codice del metodo
    
       private void creaListaAnadip()
        {
            conn =  ConnOleDb(connString);
           
                   try
            {
                    st = conn.createStatement();
                   
                    strsql = "Select * from Anadip";
                    pst = conn.prepareStatement(strsql);
                    rs=pst.executeQuery();
                    while (rs.next())
                          listaAnadip.add(new Anadip(Long.parseLong(rs.getString("matricola")),
                                                   rs.getString("cognome"),
                                                   rs.getString("nome"),
                                                   rs.getString("username"),
                                                   rs.getString("password")));
    
                    rs.close();
                    rs = null;
                    st.close();
                    st = null;
                    conn.close();
                    conn = null;   
      
                  //  qui dovrei legare la lista al controllo
                  
                    
                    
                    
                    
            }
                   catch(Exception e)
            {
                JOptionPane.showMessageDialog(null,  e);
               // System.out.println("Errore generico in Connessione");
            } 
       }
    No, NON è questo metodo che dovrebbe legare la lista a JTable. Cioè ... tecnicamente potresti farlo ma non sarebbe affatto "buono".
    Sarebbe meglio fare una classe specifica a parte per l'accesso al DB, che espone dei metodi es.

    public List<Anadip> leggiAnadip()

    E sarà poi qualcun'altro che "lega" la lista restituita alla tabella da visualizzare.
  • Re: Come utilizzare una arralist in un elenco

    P.S. leggi anche questo mio singolo post (fa parte di una discussione molto lunga).
  • Re: Come utilizzare una arralist in un elenco

    Ciao Andrea

    Sto leggendo la risposta ad una domanda analoga sulla JTable.
    Mi sembra molto complessa.

    Andando al sodo per il problema, che ritenevo banale di utilizzo della JTable, la modalità che ho iniziato a sviluppare di salvare i dati in una Lista non è una strada praticabile ?

    Come posso banalmente riuscire a visualizzare i dati nella JTable ?

    Seconda domanda.
    se non utilizzo la JList per visualizzare i dati di una tabella, che uso ne posso fare di una JList ?
    Quali tipi di dati posso visualizzare ?

    Continuo a leggere la risposta al problema analogo, ma trovo l'argomreno davvero ostico.
    Servirebbero forse, come indicava anche l'altro collega, alcuni banali esempi e su questi poter calare tutta la logica del controllo.


    Ciao

    Moreno
  • Re: Come utilizzare una arralist in un elenco

    misonsan ha scritto:


    Sto leggendo la risposta ad una domanda analoga sulla JTable.
    Quale risposta, di preciso?

    misonsan ha scritto:


    Andando al sodo per il problema, che ritenevo banale di utilizzo della JTable, la modalità che ho iniziato a sviluppare di salvare i dati in una Lista non è una strada praticabile ?
    Se intendi il fatto di creare e trattare dei List<TuoTipo> (List è il java.util.List ovvero una "collezione" lista), è ASSOLUTAMENTE corretto e sensato.

    misonsan ha scritto:


    Come posso banalmente riuscire a visualizzare i dati nella JTable ?
    Purtroppo JTable "banale" non lo è, è uno dei componenti Swing più complessi. Servirebbe entrare più "dentro" quei concetti che ho detto. Capisco che ti sei posto degli obiettivi, che vuoi fare una applicazione (magari velocemente..), ecc... ma si dovrebbe anche passare attraverso un po' di "studio" di queste cose. E quindi richiede un po' di tempo ...

    misonsan ha scritto:


    se non utilizzo la JList per visualizzare i dati di una tabella, che uso ne posso fare di una JList ?
    JList si usa solitamente per visualizzare una lista di "voci" semplici, quindi non qualcosa di "tabellare" (con più campi).

    misonsan ha scritto:


    Quali tipi di dati posso visualizzare ?
    A cosa ti riferisci?

    misonsan ha scritto:


    Continuo a leggere la risposta al problema analogo, ma trovo l'argomreno davvero ostico.
    Lo immagino. Probabilmente provieni da un contesto in cui cose come queste sono più semplici e/o approcciate in altro modo. Lo capisco.

    misonsan ha scritto:


    Servirebbero forse, come indicava anche l'altro collega, alcuni banali esempi e su questi poter calare tutta la logica del controllo.
    Esempi ne trovi. Sicuramente anche qui sul forum (credo di averne postati, ma non ricordo quando/dove). Appena riesco posso scrivere un esempio.

    La questione comunque è anche un'altra: quante gestioni di tabelle devi fare? Ora devi gestire una tabella degli Anadip. Poi? Quante altre entità pensi di avere che devi mostrare in tabella?
    Perché se il numero fosse 3~4 e più allora può valere la pena spendere un pochino di tempo per farsi un table model "generico" (nel senso anche proprio dell'uso dei "generics" di Java 5) in modo che sia riutilizzabile e si possa poi "specializzare" scrivendo il minimo indispensabile per differenziare tra le varie entità.
    EDIT: insomma, normalissima programmazione "ad oggetti".
  • Re: Come utilizzare una arralist in un elenco

    Ciao Andrea

    Ho trovato molto stimolante la risposta ad un precedente problema analogo che mi hai indicato
    Messaggio da andbin » 20 set 2018, 16:42
    P.S. leggi anche questo mio singolo post (fa parte di una discussione molto lunga).
    Sto leggendo qualche manuale al riguardo, ma ribadisco è molto più utile, secondo me, fare cultura e acculturarsi sull'argomento confrontandoci con qualceh esempio che permetta di toccare con mano gli argomenti complessivi del problema.

    Se riuscissi a creare un progettino minimale che visualizzi i dati di una tabella, magari impostando anche i campi di testata delle colonne da quelle della stringa sql usata per fare la query, sarebbe ottimale.
    La questione comunque è anche un'altra: quante gestioni di tabelle devi fare? Ora devi gestire una tabella degli Anadip. Poi? Quante altre entità pensi di avere che devi mostrare in tabella?
    Perché se il numero fosse 3~4 e più allora può valere la pena spendere un pochino di tempo per farsi un table model "generico" (nel senso anche proprio dell'uso dei "generics" di Java 5) in modo che sia riutilizzabile e si possa poi "specializzare" scrivendo il minimo indispensabile per differenziare tra le varie entità.
    EDIT: insomma, normalissima programmazione "ad oggetti".
    a tal riguardo, leform che vorrei sviluppare contengono per ogni tabella trattata l'elenco dei record della tabella in esame.
    perciò sto pensando a creare una form "Modello" da utilizzare per tutte le elenco da sviluppare.

    Un tuo programmino d'esempio andrebbe a fagiolo.

    Buona giornata.

    ciao

    Moreno
  • Re: Come utilizzare una arralist in un elenco

    misonsan ha scritto:


    Se riuscissi a creare un progettino minimale che visualizzi i dati di una tabella, magari impostando anche i campi di testata delle colonne da quelle della stringa sql usata per fare la query, sarebbe ottimale.
    Vedo in questi giorni di mettere sù un progettino con esempi incentrati su JTable ... magari è la volta buona che lo metto su github!

    Comunque: ti è chiaro a cosa serve il "table model"? Hai già guardato la interfaccia javax.swing.table.TableModel? Hai compreso il significato dei suoi metodi (tutti o buona parte)?

    misonsan ha scritto:


    sto pensando a creare una form "Modello" da utilizzare per tutte le elenco da sviluppare.
    Questo (ammesso di farlo bene) risolve solo l'aspetto grafico. Io parlavo del table model. Se fai un table model custom (estensione tipicamente di AbstractTableModel), ti è chiaro che senza un design apposito a livello OOP dovresti fare tante classi per ciascuna entità replicando TUTTA la logica di gestione del table model?
  • Re: Come utilizzare una arralist in un elenco

    Ciao Andrea

    Ti ringrazio per la disponibilità.
    Un progettino concreto realizza la soluzione a tanti neofiti come me.
    E' uno strumento di verifica per i concetti che leggo.
    Penso sia sempre lo strumento ideale per l'apprendimento.
    Toccare con mano gli argomenti studiati consente di sedimentarli e di stabilizzare gli argomenti.
    Trovo sempre più avvincente e fantastico Java e mi piacerebbe realmente rendermi autonomo.
    Leggo in continuazione manuali e guide e lo trovo sempre più un linguaggio creato per risolvere in maniera molto funzionale i problemi di sviluppo applicazioni.
    Buon fine settimana.

    ciao

    Moreno
Devi accedere o registrarti per scrivere nel forum
7 risposte