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