Preencher JTextField Através de um JComboBox selecionado

Bom Dia, Não Estou conseguindo buscar uma informação de um item selecionado do Jcombobox e fazer com que a sua informação seja carregada dinamicamente no JTextField, não sei se ficou claro mas segue o código, ele dá um erro de conversão de String para Objeto.

/Esté é o método que faz a pesquisa e joga no JTextField, porém dá esse erro de conversão/

public void pegaPrecoUnitario(){
Produto p = (Produto)cbProduto.getSelectedItem();
String valor = p.getPreco().toString();
txtPrecoUni.setText(String.valueOf(valor));

}

/Este é o Método pra popular os JComboBox/

public void carregarComboBox() {
for (Cliente item : clienteDAO.pesquisar(cliente)) {
cbCliente.addItem(item.getNome());
}

    for (Produto item : produtoDAO.pesquisar(produto)) {
        cbProduto.addItem(item.getNome());
    }
}

/Este é o evento para aparecer a informação dinamicamente no JTextField/
private void cbProdutoItemStateChanged(java.awt.event.ItemEvent evt) {
pegaPrecoUnitario();
}

Alguém pode me Ajudar?

Você está populando seu JComboBox com String, por isso dá erro quendo você faz Produto p = (Produto) cbProduto.getSelectedItem();, uma String não é um Produto.

Sugiro que utilize um ComboBoxModel para popular seu Combo.

Crie uma variável de instância para armazenar os produtos que você pesquisou:

private List<Produto> produtos;

Crie um ComboBoxModel para renderizar essa lista de produtos:

private class ModeloComboProdutos extends DefaultComboBoxModel<String> {

	@Override
	public int getSize() {
		return produtos == null ? 0 : produtos.size();
	}

	@Override
	public String getElementAt(int index) {
		Produto produto = produtos.get(index);
		return produto.getNome();
	}
}

E no local onde você instancia seu JComboBox, instancie dessa forma:

cbProduto = new JComboBox<>(new ModeloComboProdutos());

E para atualizar o conteúdo do combo, basta fazer isso:

produtos = produtoDAO.pesquisar(produto);

E finalmente para atualizar o JTextField do preço, faça assim:

public void pegaPrecoUnitario() {
	int index = cbProduto.getSelectedIndex();
	Produto produto = produtos.get(index);
	String valor = String.valueOf(produto.getPreco());
	txtPrecoUni.setText(valor);
}
1 curtida

Agora ele esta apontando como Null?

public void pegaPrecoUnitario(){

    int index = cbProduto.getSelectedIndex();
Nesta Linha-->>>>  produto = produtos.get(index);
String valor = String.valueOf(produto.getPreco());
txtPrecoUni.setText(valor);
    
}

É que você não inicializou o atributo. :expressionless:

como que faço isso, estou na faculdade sou novo :sweat_smile: