Java - impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

 
Vista:
sin imagen de perfil

impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

Publicado por guido (3 intervenciones) el 22/11/2017 13:16:48
Hola, tengo una duda de como poder validar ingresos de datos duplicados a un jtable, tengo una lista de paises en un jcombobox y al momento de seleccionar y guardar con un jbutton(agregar) me sigue agregando al table incluso si ya guarde el registro. lo que necesito es que mande un mensaje por jlabel al usuario diciendo que el table ya contiene ese registro y no se puede almacenar se que se hace con un metodo boolean que recorra la tabla y valide que no se repitan datos.

1
2
3
4
5
6
7
8
9
10
11
12
private void b_sumpaisActionPerformed(java.awt.event.ActionEvent evt) {
       if(txt_pais.getSelectedIndex()==0){
          l_mensajeframe.setText("Seleccione al menos un Pais de origen");
       }else{
 
        DefaultTableModel modelo=(DefaultTableModel) jtablaPais.getModel();
        Object [] fila=new Object[1];
        fila[0]=txt_pais.getSelectedItem();
        modelo.insertRow(0, fila);
        jtablaPais.setModel(modelo);
    }
}
hasta el momento este es el boton donde solo agrego y valido si se selecciono algo antes de ingresar.
ayuda con el metodo boolean porfavor o si hay otra forma que me complemente este codigo y impedir lo descrito estaria muy agradecido por la ayuda.
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
sin imagen de perfil
Val: 190
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

Publicado por preguntas (70 intervenciones) el 22/11/2017 21:21:30
pues... con el método getValueAt(int fila, int columna) de DefaultTableModel retorna el valor de esa celda.

Ahora con un bucle for recorres cada una de las filas de la tabla, con el método anteriormente escrito validas si el pais seleccionado coincidió con alguno de los ya registrados en la lista, y si es así pues mensaje de error, y si no, lo agrega.

Si necesitas mas ayuda me comentas tu código actualizado.
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
sin imagen de perfil

impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

Publicado por guido (3 intervenciones) el 23/11/2017 15:20:41
hola la verdad que no se como poder implementar esas lineas de codigo como puse el codigo solo valida que al momento de apretar el botton que agrega registros del combobox no deje si no se ha seleccionado nada y lo otro es guardar en el jtable bueno lo que necesito es que si por ejemplo mi combobox tiene numeros del 1 al 10 por asi decirlo y voy agregando numeros con el botton que los manda a la tabla y seleccionando en el combobox necesito que si he ingresado por asi decir 1 y agrego al table luego vuelvo al combobox y selecciono el 4 y agrego, luego vuelvo al combobox y selecciono nuevamente el 1 y vuelvo agregarlo, lo que necesito es que me impida registrar en el jtable ya que ya lo he agregado no quiero registros duplicados en mi jtable ya que despues haber registrado varios campos tengo un botoon que guarda a la base de datos y quiero impedir que se guarden dos veces las mismas cosas si puedes ayudar con la linea de codigo que necesito para validar eos te agradeceria mucho por lo que he leido es un metodo boolean pero no se nada mas por favor ayudame con esa solucion
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
sin imagen de perfil
Val: 190
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

Publicado por preguntas (70 intervenciones) el 23/11/2017 16:22:46
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
public class Principal extends JFrame {
 
	JTable tabla;
	JPanel panel;
 
	public Principal() {
		init();
	}
 
	private void init() {
		this.setSize(300, 400);
 
		String[] nombreColumnas = {
				"Nombres", "Edades"
		};
 
		Object[][] datos = {
				{"Juan", 25},
				{"Pedro", 32},
				{"Maria", 23}
		};
 
		DefaultTableModel model = new DefaultTableModel(datos, nombreColumnas);
 
		tabla = new JTable(model);
		panel = new JPanel();
 
		JScrollPane sc = new JScrollPane(tabla);
 
		this.add(sc);
 
		this.pack();
		this.setLocationRelativeTo(null);
 
	}
 
	public boolean existe(String nombre) {
		boolean encontrado = false;
		DefaultTableModel model = (DefaultTableModel)this.tabla.getModel();
		for(int i = 0;i<model.getRowCount();i++) {
			if(model.getValueAt(i, 0).toString().equalsIgnoreCase(nombre)) {
				encontrado = true;
				break;
			}
		}
		return encontrado;
	}
 
	public void agregar(String nombre) {
		DefaultTableModel model = (DefaultTableModel)this.tabla.getModel();
		if(!existe(nombre)) {
			Object[] datoFila = {nombre};
			model.addRow(datoFila);
			this.tabla.setModel(model);
			JOptionPane.showMessageDialog(null, nombre + " se registró en la tabla");
		}
		else {
			JOptionPane.showMessageDialog(null, nombre + " ya se encuantra registrado en la tabla");
		}
	}
 
	public static void main(String[] args) {
 
		Principal p = new Principal();
		p.setVisible(true);
		p.agregar("maria");
		p.agregar("Ana");
 
	}
 
}

Solo debes adaptarlo a tu código
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

impedir registrar un dato de un jcombobox a un jtable si ya se ingreso anteriormente

Publicado por guido (3 intervenciones) el 25/11/2017 17:19:12
muchas gracias era exactamente lo que he buscado durante dias esto me resuelve la problematica te agradezco
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