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

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

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);
}