(RESOLVIDO)Inserir um Elemento numa lista com DefaultListModel

Olá pessoal, tudo bem? estou criando uma aplicação que necessita mostrar alguns elementos registrados em uma lista, que mostrarei através do DefaultListModel. Infelizmente dentro da aplicação ele reconhece os elementos que foram inseridos mas não como deveria, já que ele não mostra o nome do elemento mas sim o caminho da entidade, queria saber como faço pro DeufaltListModel reconhecer meu objeto e os elementos dentro dele como tipo String, não como código aleatório.

package sistema.telas;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import sistema.BancoDeDados;
import sistema.entidades.Cargo;

public class CargosConsultar extends JPanel{
Cargo cargoAtual;
JLabel labelTitulo,labelCargo;
JTextField campoCargo;
JButton botaoPesquisar,botaoEditar,BotaoExcluir;
DefaultListModel listaCargosModelo = new DefaultListModel<>();
JList listaCargos;

public CargosConsultar ()
{
 criarComponentes();
 criarEventos();
}

private void criarComponentes() {
    setLayout(null);
    
    
    labelTitulo = new JLabel("Consulta de Cargos", JLabel.CENTER);
    labelTitulo.setFont(new Font(labelTitulo.getFont().getName(), Font.PLAIN, 20));
    labelCargo = new JLabel("Nome do Cargo",JLabel.LEFT);
    campoCargo = new JTextField();
    botaoPesquisar = new JButton("Pesquisar Cargo");
    botaoEditar = new JButton("Editar");
    botaoEditar.setEnabled(false);
    BotaoExcluir = new JButton("Excluir");
    BotaoExcluir.setEnabled(false);
    listaCargosModelo = new DefaultListModel<>();
    listaCargos = new JList();
    listaCargos.setModel(listaCargosModelo);
    listaCargos.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    
    
    labelTitulo.setBounds(20,20,660,40);
    labelCargo.setBounds(150,120,400,20);
    campoCargo.setBounds(150,140,400,40);
    botaoPesquisar.setBounds(560,140,130,40);
    listaCargos.setBounds(150,200,400,240);
    botaoEditar.setBounds(560,360,130,40);
    BotaoExcluir.setBounds(560,400,130,40);
    
    
    
    add(labelCargo);
    add(labelTitulo);
    add(campoCargo);
    add(botaoPesquisar);
    add(listaCargos);
    add(botaoEditar);
    add(BotaoExcluir);
    
    setVisible(true);
    

}

private void criarEventos() {
   botaoPesquisar.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
          sqlPesquisarCargos(campoCargo.getText());
       }
   });
   botaoEditar.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
           
       }
   });
   BotaoExcluir.addActionListener(new ActionListener() {
       @Override
       public void actionPerformed(ActionEvent e) {
           
       }
   });
   listaCargos.addListSelectionListener(new ListSelectionListener() {
       @Override
       public void valueChanged(ListSelectionEvent e) {
           cargoAtual =  listaCargos.getSelectedValue();
           if(cargoAtual == null)
           {
               botaoEditar.setEnabled(false);
               BotaoExcluir.setEnabled(false);
           }
           else
           {
               botaoEditar.setEnabled(true);
               BotaoExcluir.setEnabled(true);
           }
       }
   });
}
private void sqlPesquisarCargos(String nome)
{
        
             //CONEXÃO 
 Connection conexao;
 //INSTRUÇÃO SQL
 Statement instrucaoSQL;
 //RESULTADOS
    ResultSet resultados;
    
    try {
        //conectando no banco de dados
        conexao = DriverManager.getConnection(BancoDeDados.URL_CONEXAO,BancoDeDados.USUARIO,BancoDeDados.SENHA);
        //criando a instrução SQL
        instrucaoSQL = conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
       resultados = instrucaoSQL.executeQuery("SELECT * FROM cargo WHERE nome like '%"+nome+"%'");
       
       listaCargosModelo.clear();
       while (resultados.next())
       {
           Cargo cargo = new Cargo();
           cargo.setId(resultados.getInt("id"));
           cargo.setNome(resultados.getString("nome"));
        
           
           listaCargosModelo.addElement(cargo);
           System.out.println("nome"+ cargo.getNome());
       }
        
       
        
        }
     catch (SQLException ex) {
          JOptionPane.showMessageDialog(null, "Ocorreu um erro ao consultar os cargos");
       Logger.getLogger(CargosInserir.class.getName()).log(Level.SEVERE,null,ex);
    }

        }
}

Screenshot_1

Olá! Experimente colocar o seguinte método na sua classe Cargo:

public String toString() {
return getNome(); // utilize o get de acordo com o valor que vc queira mostrar na sua lista
}

Minha entidade cargo está assim

package sistema.entidades;

public class Cargo {

private String nome;
private int id;

public String getNome() {
return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}
public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

}

mesmo com os metodos getter e setters não funcionou como deveria, além de eu ter feito o teste para ver se os valores estavam sendo passados relamente, manter mostrar no console e dentro do console mostra os nomes certinho , mas na lista mostro do jeito que mostrei no print

Mas você adicionou o método toString() que eu mencionei na resposta de cima?

adicionei mas como vou utliza-lo no addElements, sendo que eu uso como parametro o objeto da classe Cargo

Quando eu tive esse problema, essa foi a solução que eu encontrei… Eu dei um override no método toString pra me retornar o nome do objeto desejado. E passei o objeto no addElement no model da list. E meu problema foi resolvido!

1 curtida

Ae funcionou eu só nao estava entendendo se eu deveria fazer o metodo na entidade mesmo, viajei mesmo, Muito Obrigad!! Consegui Arrumar.