Jlist não está funcionando com .setModel()

2 respostas
JVieira88

Sou novo em java e estou a utilizar o NetBeans. Estou a fazer uma interface gráfica para ligar a uma base de dados que criei em postgresql.
Não estou a conseguir obter as strings na minha Jlist...

Criei uma classe (acederbd () ) para ligar ao postgres e onde tenho também o seguinte código para obter as strings da base de dados:

List getNomesSensores() {
        List<String> nome_sensor = new ArrayList<String>();
        try {
            java.sql.Statement frase = this.conn.createStatement();
            ResultSet rs =frase.executeQuery("select nome_sensor from tipo_sensor;");
            while (rs.next()) {
                nome_sensor.add(rs.getString("nome_sensor"));
            }
        } catch (SQLException e) {
            System.out.println("Could not create statement in JDBC");
            e.printStackTrace();
        }
        
        return nome_sensor;
    }
Na janela onde quero ver as strings numa Jlist tenho o seguinte codigo:
public class sensores_admin extends javax.swing.JFrame {

    public sensores_admin() {
        initComponents();
        final acederbd ligar = new acederbd();
        ligar.connect("postgres", "1234", "");
        Main.sensores=ligar.getNomesSensores();
        System.out.println(Main.sensores);
        sensores_list.setModel(Main.sensores);
        sensores_list.setSelectedIndex(0);

    }
No Main do projecto tenho:
public static List sensores;
O meu problema está no .setModel()....

como faço um system.out.printl(Main.sensores) , ele mostra [Sensor Óptico, Sensor Piezoelectrico], que são os que tenho na base de dados por enquanto...

Alguem tem alguma ideia do que está errado?
Obrigado ;)

2 Respostas

diego_qmota

Utilize um DefaultListModel

Segue um exemplo:

final DefaultListModel model = new DefaultListModel();
for (String sensor : ligar.getNomesSensores())
      model.addElement(sensor);

sensores_list.setModel(model);
JVieira88

eu tinha tentado um DefaultListModel mas nao funcionou... mas obrigado pela ajuda ;)

ja consegui resolver o problema, fica aqui a solução para quem tenha um problema parecido ;)
sensores_list.setModel( new javax.swing.AbstractListModel() {

            public int getSize() {
                return ligar.getNomesSensores().size();
            }

            public Object getElementAt(int index) {
                Object elemento = ligar.getNomesSensores().get(index);
                return elemento; 
            }
        });
        sensores_list.setSelectedIndex(0);
Criado 10 de dezembro de 2010
Ultima resposta 20 de dez. de 2010
Respostas 2
Participantes 2