Newsgroup: it.comp.java
Titolo: Dimensionamento array

allora ho una classe, all'inizio dichiaro un array privato, poi c'ho
un evento formWindowOpened, che mi associa (appena apro il form) tutti
i risultati di un ResultSet predefinito nell'array privato passato poi
al costruttore della jList.
Niente di strano, fin qui, inoltre ho un comboBox, che in base
all'elemento che scelgo può farmi variare anche l'array e quindi la
Jlist di cui sopra (l'evento è un ItemStateChanged).
Appena parte è tutto OK anche la visualizzazione della jList (e ad es.
mi mostra 4 oggetti), ora se clicco sul comboBox e cambio elemento
potrei avere problemi, infatti se il nuovo ResultSet che voglio
visualizzare contiene + oggetti del ResultSet precedente nn vengono
mostrati nella jList, non ho problemi se invece sono minori o uguali.
Di seguito il codice:
==========================================
package cc;
import java.sql.*;
import java.util.ArrayList;
public class Paziente extends javax.swing.JFrame {
        private String[] sintomiList, malattieList;
        private MyDBConn mdbc;
//...
private void cbxDataIngressoItemStateChanged(java.awt.event.ItemEvent
evt) {
        ResultSet gen, mal;
        mal=mdbc.inviaQuery("SELECT * FROM .....");
        gen=mdbc.inviaQuery("SELECT * FROM .....");
        try {
            gen.first();
            malattieList = creaLista(mal, "MALATTIA");
            // il metodo seguente è la specifica di creaLista()
            //...
        } catch (SQLException ex) {
            alerts.showErr(ex.getMessage());
        }
        mdbc.close(gen);
        mdbc.close(mal);
}
 private String[] creaLista(ResultSet cursore, String tipo) throws
SQLException {
            cursore.beforeFirst();
            ArrayList<String> lista=new ArrayList<String>();
            while(cursore.next())
                lista.add(cursore.getString(tipo));
            return lista.toArray(new String[lista.size()]);
}
private void formWindowOpened(java.awt.event.WindowEvent evt)
{
        ResultSet gen, mal;
        gen=mdbc.inviaQuery("SELECT * FROM ...");
        mal=mdbc.inviaQuery("SELECT * FROM ...");
        try {
            gen.first();
            // ...
            malattieList = creaLista(mal, "MALATTIA");
        } catch (SQLException ex) {
            alerts.showErr(ex.getMessage());
        }
        mdbc.close(gen);
        mdbc.close(mal);
}
==========================================
per costruire effettivamente la lista (sempre all'interno della
classe):
==========================================
new javax.swing.AbstractListModel() {
            public int getSize() { return malattieList.length; }
            public Object getElementAt(int i) { return
malattieList[i]; }
        }
==========================================
Come posso fare per eliminare questo problema ed avere una soluzione
"universale"?

 "universale"?
Non ho capito bene il problema, ma non puoi tenere sempre la lista sotto 
forma di ArrayList ? Quando fai una nuova query, la "svuoti" (Metodo 
"clear()") e poi la riempi con i risultati del resultset ...

 "clear()") e poi la riempi con i risultati del resultset ...
Al costruttore della JList devo passare un array...


Ti conviene ragionare in termini di model (ListModel) ovvero
- Crei tu un ListModel (di già fatto trovi DefaultListModel)
- Passi la tua istanza di ListModel alla JList
- Quando serve svuoti e riempi il tuo ListModel
HTH


ti dispiacerebbe farmi un esempio????
per ora il mio completo è così:
=================================================
lstSintomiriscontrati.setModel(new javax.swing.AbstractListModel() {
            public int getSize() { return sintomiList.length; }
            public Object getElementAt(int i) { return
sintomiList[i]; }
});
=================================================


PS: Per quanto riguarda il post di sopra al posto di sintomiList,
considerate malattieList come array.

 ti dispiacerebbe farmi un esempio????
Hai dato un'occhiata alla documentazione riguardo a
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ListModel.html
e 
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/DefaultListModel.html
???

 ???
in pratica mi consigli di togliere l'abstractListModel e usare il
DefaultListModel?


Si, decisamente.


Sto provando un po' a cambiare la situazione, ma non riesco a ottenere
del codice fatto bene...
chi mi aiuterebbe con un esempio di codice.