Erro ao gerar venda no sistema javafx

13 respostas
M

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

13 Respostas

rodriguesabner
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?

M

olha o código completo melhor

rodriguesabner

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

M

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;
    }
rodriguesabner
private Produto produto;

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

M

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());
rodriguesabner

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

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

rodriguesabner

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

rodriguesabner

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

M

Ele da erro ao adicionar o produto, estranho

rodriguesabner

cade o erro?

M
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)
Criado 19 de outubro de 2019
Ultima resposta 25 de out. de 2019
Respostas 13
Participantes 2