Java - Que no se repitan en tabla

   
Vista:

Que no se repitan en tabla

Publicado por undertaker (61 intervenciones) el 27/09/2013 21:30:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ArrayList r = prod.cargar(seleccion);
            iterador = r.iterator();
 
            while (iterador.hasNext()) {
                prod = (Producto) iterador.next();
            }
            nombre = prod.getnombre();
 
            Object[] value = {seleccion, nombre,cantidad};
 
            if (value[0].equals()) {
                    throw new ExeptionError(1, "No puedes ingresar otro producto", "Error", JOptionPane.ERROR_MESSAGE);
                }
                 Arreglo.add(prod.getIdProd());
                getdtm().addRow(value);
                jtabla.setModel(getdtm());


Esto esta dentro de un action de boton, Lo que pretendo hacer es que al apretar el boton no se vuelva a repetir el producto

se supone que voy agregando cada ves una fila de acuerdo a lo seleccionado por el boton pero no quiero repetir el mismo producto
no se como hacer la condicion y obtener todos los datos de un jtable

es decir la columna 0 del value
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Que no se repitan en tabla

Publicado por William Alexander Brito Viñas (12 intervenciones) el 28/09/2013 17:55:29
Estas reinventano la rueda. En lugar de un arreglo de objetos usa un Hashtable.

Primero declara una clase trivial encapsular los productos, podria ser algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Product {
    private int _id;
    private String _desc;
 
    public int getId() { return _id; }
 
    public void setDesc(String aDescription) {
        _desc = aDescription;
    }
    public String getDescription() {
        return _desc;
    }
 
    @Override
    public int hashCode() {
        return ((Integer)_id).hashCode() + _desc.hashCode();
    }
 
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Product other = (Product) obj;
        if (this._id != other._id) {
            return false;
        }
        if (!Objects.equals(this._desc, other._desc)) {
            return false;
        }
        return true;
    }
 
    @Override
    public String toString() {
        return String.format("<%d>-%s", _id, _desc);
    }
 
    public Product(int Id) {
        _id = Id;
    }
}


esta clase sobreescribe los metodos hashCode y Equals para controlar de que forma el HashMap va a decidir que productos considerara como redundantes.

Acto seguido declara donde vayas a efectuar las adiciones un HashMap en lugar de un simple array.

1
private HashMap<Integer, Product> productList = new HashMap<>();


Ahora el metodo de agregar productos a esta coleccion queda simple, en caso de que entres alguno duplicado sencillamente no entra. Lo puedes verificar mirando la propiedad size() del HashMap. Esto es un ejemplo.

1
2
3
4
5
6
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        Product p = new Product(Integer.parseInt(jTextField1.getText()));
        p.setDesc(jTextField2.getText());
 
        productList.put(p.hashCode(), p);
    }

Esto seria todo. La veirifacion de duplicados la hace el HashMap si que tengas que "ensuciarte" las manos.

Saludos:
YO:
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Que no se repitan en tabla

Publicado por undertaker (61 intervenciones) el 29/09/2013 03:35:01
gracias amigo...lo he solucionado ;)

Me ha servido tu información
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar