Foros del Web » Programación para mayores de 30 ;) » Java »

Eliminar una fila en JTable mediante Checkbox

Estas en el tema de Eliminar una fila en JTable mediante Checkbox en el foro de Java en Foros del Web. Hola chicos, buenas tardes, estoy con un pequeño problema, resulta que deseo seleccionar una fila o varias filas para eliminar mediante un checkbox, creo un ...
  #1 (permalink)  
Antiguo 30/04/2016, 15:36
 
Fecha de Ingreso: abril-2016
Mensajes: 16
Antigüedad: 8 años
Puntos: 0
Exclamación Eliminar una fila en JTable mediante Checkbox

Hola chicos, buenas tardes, estoy con un pequeño problema, resulta que deseo seleccionar una fila o varias filas para eliminar mediante un checkbox, creo un checkbox y lo inserto en mi Jtable, pero me da error, que es lo que hago mal?Gracias!!

Declaro el chekbox:

JCheckBox checkBoxJtable;

Cargo datos y JCheckBox en la Jtable:

String posicion = null;
int total = 0;
DefaultTableModel modeloDeMiTabla=(DefaultTableModel)table.getModel( );
modeloDeMiTabla.addRow(new Object[numeroFilas]);

table.setValueAt(checkBoxJtable, numeroFilas, 0); ////Insertamos el check box!
table.setValueAt(textField_NombreBebidas.getText() , numeroFilas, 1);
table.setValueAt("13:00", numeroFilas, 2);
table.setValueAt(textField_PrecioBebidas.getText() , numeroFilas, 3);

int fila = table.getRowCount();
int i;


for (i = 0; i < fila; i++) {
posicion = (String) table.getValueAt(i, 3);

int valor = Integer.parseInt(posicion);

total= total+valor;

}

String totalFinal = String.valueOf(total);


textField_Total.setText(totalFinal);

numeroFilas++;

bebidas.setNombreBebida(textField_NombreBebidas.ge tText());
bebidas.setPrecioBebida(Integer.valueOf(textField_ PrecioBebidas.getText()));

bebidasarraylist.add(bebidas);

}


ELIMINAR:

btnEliminar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

if( checkBoxJtable.isSelected()){

try {

DefaultTableModel modeloDeMiTabla=(DefaultTableModel)table.getModel( );
modeloDeMiTabla.removeRow(table.getSelectedRow());
table.addRowSelectionInterval(0,0);
modeloDeMiTabla=null;

} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Seleccione la fila que desea quitar.");
}


}else{

System.out.println("NO encuentro la opcion");

}

}
});

btnEliminar.setBounds(142, 584, 117, 25);
panel.add(btnEliminar);



al realizar eso me da el siguiente error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException <-----
  #2 (permalink)  
Antiguo 02/05/2016, 17:41
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Eliminar una fila en JTable mediante Checkbox

¿En que momento te sale este error, al momento de cargar la aplicacion con los datos? si es asi tal vez sea porque no esta trayendo nada de la base de datos, por lo que debes checar tus conexiones con la base y que en la base existan registros, ya que por como estas manejando el llenado de la tabla siempre tiene que haber por lo menos 1 registro disponible, intenta cambiar el ciclo for por while.
  #3 (permalink)  
Antiguo 03/05/2016, 07:11
 
Fecha de Ingreso: abril-2016
Mensajes: 16
Antigüedad: 8 años
Puntos: 0
Exclamación Respuesta: Eliminar una fila en JTable mediante Checkbox

Hola Danx,buen dia! y gracias por tu respuesta, mira, logre agregar y eliminar seleccionando la fila (Por el momento, no por medio de checkBox ) pero me da un error,que cuando estoy eliminando, de arriba hacia abajo, o tengo 4 opciones cargadas en Jtable y intento eliminar la del medio se me borra toda la tabla o queda a la mitad, y siempre me da este error:

Código:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 1
pero todo va con normalidad cuando elimino de abajo hacia arriba de uno a uno. Es muy raro, la base de datos se carga en un ComboBox, cuando selecciono una opción la carga en el Jtable, acá pongo el código:


ELIMINAR:

Código:
	btnEliminar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				int row = table.getSelectedRow();
				int total=0;
				String totalFinal=null;
				
				try
				{
				
					int fila = table.getRowCount();
					int i;
					String posicion = null;
					DefaultTableModel modeloDeMiTabla = (DefaultTableModel) table.getModel();
				
								
					for (i = 0; i < fila; i--) {
						
						
						posicion = (String) table.getValueAt(row, 3);  
						
						System.out.println("valor en la poscion"+ posicion);
						
						int valoraeliminar = Integer.parseInt(posicion);
						
						System.out.println("valor en la poscion pasado a int"+ valoraeliminar); ///HASTA ACA TODO DE 10!!
						
						int valor = Integer.parseInt(textField_Total.getText());//////////////////
						
						System.out.println("valor existente en el textfield:"+ valor);
						
						total = valor - valoraeliminar;
						
						System.out.println("valor total:"+ total);
						
						
						modeloDeMiTabla.removeRow(row);
		        	 
						totalFinal = String.valueOf(total);

						System.out.println("valor final :"+ totalFinal);
						
					}
					
					
					
					
				}catch(ArrayIndexOutOfBoundsException ex){;}
				
				 textField_Total.setText(totalFinal); 
				 numeroFilas--;
				
			}
		
		});
AGREGAR:

Código:
String posicion = null;
					int totalgeneral = 0;
					DefaultTableModel modeloDeMiTabla=(DefaultTableModel)table.getModel();
					modeloDeMiTabla.addRow(new Object[numeroFilas]);
					
			        table.setValueAt(checkBoxJtable, numeroFilas, 0); ////Insertamos el check box!
			        table.setValueAt(textField_NombreBebidas.getText(), numeroFilas, 1);
			        table.setValueAt("13:00", numeroFilas, 2);
			        table.setValueAt(textField_PrecioBebidas.getText(), numeroFilas, 3);
			        
			        int fila = table.getRowCount();
			        int i;
			        
			        
			     
			        
			        for (i = 0; i < fila; i++) {
			        	 posicion = (String) table.getValueAt(i, 3);
			        	 
			        	 int valor = Integer.parseInt(posicion);
					        
			        	 totalgeneral= totalgeneral+valor;
				   
			        }
			        
			        String totalFinal = String.valueOf(totalgeneral);

			        textField_Total.setText(totalFinal);
				 
					numeroFilas++;
Les agradezco la ayuda!!!!

Etiquetas: checkbox, fila, jtable, mediante, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.