Erro ao gerar venda no sistema javafx

Estou com esse erro

Caused by: java.lang.ClassCastException: java.base/java.lang.String cannot be cast to com.jdenner.model.bean.Produto
	at com.jdenner.control.VendaController.adicionarItem(VendaController.java:337)
	... 62 more




@Override
@FXML
public void adicionarItem() throws ParseException {
    NumberFormat nf = NumberFormat.getNumberInstance();
    Venda.ItemVenda item = venda.new ItemVenda();
    item.setProduto((Produto) comboProduto.getSelectionModel().getSelectedItem());
    item.setQuantidade(nf.parse(campoQuantidade.getText()).intValue());
    item.setValorUnitario(nf.parse(campoValor.getText()).floatValue());
    venda.addItem(item);
    tabelaProdutos.setItems(venda.getItens());
    trocar(2);
}
1 curtida
String cannot be cast to com.jdenner.model.bean.Produto

String não pode ser convertido em ....bean.Produto.

Basicamente você está fazendo assim:

String produto = "Camiseta";
list.add(produto);

Ao invés de fazer:

Produto produto = new Produto();
produto.setCategoria("Camiseta");
list.add(produto);

Não sei se aplica ao seu caso. Manda o que tem na linha 337!


Edit>

ACho que é essa linha aqui:

item.setProduto((Produto) comboProduto.getSelectionModel().getSelectedItem());

setProduto é do tipo String? ou do tipo bean.Produto?

olha o código completo melhor

Manda aqui mesmo, só falar onde tá dando erro e qual a linha. É melhor e mais fácil

Mano o erro é oq vc falou é o cast

item.setProduto((Produto) comboProduto.getSelectionModel().getSelectedItem());

o setProduto é o produto da classe ItemVenda
e o Produto é outra classe

public class ItemVenda {

    private int codigo;
    private Produto produto;
    private int quantidade;
    private double valorUnitario;

    public ItemVenda() {
        this.codigo = 0;
    }


    public void setProduto(Produto produto) {
        this.produto = produto;
    }
private Produto produto;

Troca a variavel produto pra String. Não tem necessidade ela ser do tipo Produto

fiz como vc disse

item.setProduto((String) comboProduto.getSelectionModel().getSelectedItem());

error: incompatible types: String cannot be converted to Produto
        item.setProduto((String) comboProduto.getSelectionModel().getSelectedItem());

Como ta o ItemVenda agora?

Tem que ficar assim:

private String produto;
    public String getProduto(String produto) {
        return produto;
    }

    public void setProduto(String produto) {
        this.produto = produto;
    }

estranho mesmo assim não deu certo.
Acho que uma boa prática seria um Generics

Como não deu certo? Que erro deu? Se estiver dando o mesmo erro, vc não alterou.

Do jeito q vc está fazendo, teria q passar assim

Produto produto = new Produto();
produto.setA();
produto.setB();
item.setProduto(produto);

Mas vc só quer passar o nome do produto, então não tem problemas trocar pra String!!!

Ele da erro ao adicionar o produto, estranho

cade o erro?

Caused by: java.lang.ClassCastException: java.base/java.lang.String cannot be cast to com.jdenner.model.bean.Produto
	at com.jdenner.control.VendaController.adicionarItem(VendaController.java:337)