Preencher um Jlist a partir de uma list que contém as informações de uma consulta SQL

1 resposta
C

Olá pessoal,

preciso preencher um Jlist com um método Listar(), o qual retorna uma lista como abaixo:

Classe Dao -

public List Listar() throws SQLException{

PreparedStatement stmt = this.connection.prepareStatement(Select idCategoria, Descricao from tbCategoria);

ResultSet resultado = stmt.executeQuery();

List listcat = new ArrayList<>();

while (resultado.next()){

Categoria cat = new Categoria();

cat.setIdCategoria(resultado.getInt(idCategoria));

cat.setDescricao(resultado.getString(descricao));

listcat.add(cat);			

}		

resultado.close();

stmt.close();

return listcat;

}

Classe Model -

public List Listar() throws SQLException { //retorna a lista de todos os Categoria

CategoriaDAO catdao = new CategoriaDAO();

List listcat = catdao.Listar();

return listcat;
}

Classe da Tela - JFrame

final JList listCategoria = new JList();

listCategoria.setVisibleRowCount(0);

listCategoria.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));

panel.add(listCategoria);
JButton btnSalvar = new JButton("SALVAR");
	btnSalvar.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			CategoriaModel cat = new CategoriaModel();
			Categoria categoria = new Categoria();			
			categoria.setDescricao(txtDescricao.getText());
					
			try{
				cat.adicionar(categoria);					
				JOptionPane.showMessageDialog(null, "Salvo com sucesso");
				CategoriaModel model = new CategoriaModel();
				DefaultListModel<Categoria> defa = new DefaultListModel<>();
				defa.addElement((Categoria) model.Listar());	
			                listCategoria.setSelectedValue(defa, true);
			    
			    
				
			}catch(Exception erro){
				JOptionPane.showMessageDialog(null, erro.getMessage());
			}
			
			
		}
	});

com o código assim ele aparece um erro : java.util.ArrayList cannot be cast Classe.Categoria…

Gostaria que o Jlist preenche -se com as informações da consulta SQL…

Alguém pode me ajudar… muito obrigada

1 Resposta

ViniGodoy

Oi. Bem-vinda ao fórum.

Por favor, ao postar códigos, use a tag code:

O seu problema é que a linha:

defa.addElement((Categoria) model.Listar());

Está tentando converter o tipo de retorno do método Listar (que é uma List<Categoria>) em uma única categoria.
E isso não é possível. Você terá que fazer um for para preencher todos os elementos:

for (Categoria categoria : model.Listar()) {
    defa.addElement(categoria);
}
Criado 13 de maio de 2012
Ultima resposta 13 de mai. de 2012
Respostas 1
Participantes 2