Problema usando Listmodel

Ola pessoal, me registrei hoje no fórum. To iniciando em java e to fazendo um programa que cadastra roupas: código, descrição e preco. Ai a medida que vai cadastrando ele vai fazendo a soma do preço e nao pode haver 2 roupas com o mesmo código. Aí estao o comando do Botão “Adicionar”:

   String descricao = jTextField2.getText();
        if(descricao.equals("")){
        JOptionPane.showMessageDialog(null, "Informe a descrição:");
    }
    int codigo = Integer.parseInt(jTextField1.getText());
    
     
    preco = Double.parseDouble(jTextField3.getText());
    
    precototal += preco;
    
    
    cadaroupa x = new cadaroupa();
    x.setCodigo(codigo);
    x.setDescricao(descricao);
    x.setPreco(preco);
    x.setPrecototal(precototal);
          
    Vendas.addElement(x);
    jLabel4.setText( Double.toString(x.getPrecototal()));        
}                     

Minha primeira pergunta é que quando adiciono ao Jlist, ele ta adicionando uns caracteres bizarros, eu sei que preciso formatar o String.format dentro da classe “cadaroupa”. Mas nao sei como fazer isso, alguém tem idéia?

Minha outra pergunta é como faço pra vasculhar dentro do Jlist1 a procura do código pra ver se ja foi cadastrado ou nao?

Valeu!

  1. Para melhorar a formatação da string gerada pela classe CadRoupa, você deve implementar o método toString().

  2. Se você tornar sua classe comparável pelo código, ou implementar um comparador por código, pode usar um TreeSet no lugar de um JList. Isso impedirá elementos duplicados. Se você insistir no list, faça a busca com um for (não creio que haja uma maneira muito mais eficiente com uma lista desordenada):

boolean existe = false; for (cadaroupa roupa : Vendas) { if (roupa.getCodigo() == codigo) { existe = true; break; } }

  1. Use as convenções de nome do java. Nome de classes devem ter iniciar por maiúsculas CadaRoupa, ao invés de cadaroupa. Nomes de variáveis começam com letra minúscula (vendas, ao invés de Vendas).

  2. Ao postar códigos, use a tag code, como descrito aqui: http://www.guj.com.br/posts/list/50115.java

voce precisa implementa o metodo toString para retornar o valor correto e para descobrir se o codigo ja existi voce vai ter que varrer a list comparando os elementos (no caso o codigo).

ok, obrigado. vou testar aqui
e sobre o string format? alguma dica?

e como faz isso? :smiley:

o metodo toString:

public String toString(){ return nome +" " + codigo; // aqui voce monta a string que voce precisa }

public String toString(){
return String.format("");
}

ali no “” eu coloco o formato dai?

as aspas duplas são somente espaço em branco, para que os valores não sejam impressos juntos.

consegui formatar a string e deu tudo certo, mas nao to conseguindo procurar dentro do Jlist

como faço pro comparar dentro do programa?

valeu e desculpae :smiley:

O exemplo que eu dei ali em cima não serve? Por que?

foreach not applicable to expression type

:frowning:

Vendas o que é? Um List? Um Vector?

Se não for, você tem que arranjar um jeito de percorrer seus elementos. Talvez seja algo similar a:

boolean existe = false; for (int i = 0; i < Vendas.size(); i++) if (vendas.get(i).getCodigo() == codigo) { existe = true; break; }