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

Ver JTable en ventana dialog

Estas en el tema de Ver JTable en ventana dialog en el foro de Java en Foros del Web. Hola muy buenas necesito que cuando pulse el botón de "VerTabla", me aparezca una lista en un dialog o en el mismo Frame con los ...
  #1 (permalink)  
Antiguo 01/06/2013, 08:33
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Ver JTable en ventana dialog

Hola muy buenas necesito que cuando pulse el botón de "VerTabla", me aparezca una lista en un dialog o en el mismo Frame con los datos de la tabla "producto".
Algo como esto:

http://4.bp.blogspot.com/-8nEw4IvnkK4/UMnoPqdudbI/AAAAAAAAADU/bgawmMlhEas/s1600/Java+mysql+postgresql+sql+server+reporte.bmp

Este es el códgo que llevo echo y no me muestra la lista:

Código:
ActionListener escuchadorbtnVerTabla = new ActionListener()
		{

			public void actionPerformed(ActionEvent e) 
			{
				try{
					Connection unaConexion  = DriverManager.getConnection ("jdbc:odbc:puentejava");
					Statement instruccionSQL = unaConexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
					
					ResultSet rs = instruccionSQL.executeQuery ("SELECT * FROM Productos");
					DefaultTableModel modelo = new DefaultTableModel();
					JTable tabla = new JTable(modelo);
					// Creamos las columnas.
					modelo.addColumn("idProducto");
					modelo.addColumn("Nombre");
					modelo.addColumn("Marca");
					modelo.addColumn("Precio");
					modelo.addColumn("Stock");
					modelo.addColumn("Observacion");
					modelo.addColumn("idCategoriaFK");

					// Bucle para cada resultado en la consulta
					while (rs.next()) {
						// Se crea un array que será una de las filas de la tabla.
						Object [] fila = new Object[7]; // Hay 7columnas en la tabla

						// Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
						for (int i=0;i<7;i++)
							fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

						// Se añade al modelo la fila completa.
						modelo.addRow(fila);
					}

				}catch (Exception ex) {
					ex.printStackTrace();
				}

			}

		};
		btnVerTabla.addActionListener(escuchadorbtnVerTabla);
Gracias por la ayuda
  #2 (permalink)  
Antiguo 01/06/2013, 10:18
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 17 años, 9 meses
Puntos: 454
Respuesta: Ver JTable en ventana dialog

Bueno... ¿y dónde está el JDialog?. Sólo por crear un JTable y llenarlo de datos, no se visualiza el JTable. Al final de todo ese código pon

Código java:
Ver original
  1. JDialgo d =  new JDialog();
  2. d.add(tabla);
  3. d.setVisible(true);

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 01/06/2013, 11:21
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Ver JTable en ventana dialog

Tienes razón chuidiang gran fallo el mio en no hacer visible el dialog y mostrar la tabla, no se como se me ha pasado.
Muchísimas gracias

Ahora tengo otro problema:
Al abrirse el dialog y mostrarme los datos, solo me muestra los datos numéricos y tampoco me muestra las columnas, cuando las columnas las tengo yo añadida.
si saben como ayudarme lo agradeceré mucho ;)
  #4 (permalink)  
Antiguo 01/06/2013, 13:55
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 17 años, 9 meses
Puntos: 454
Respuesta: Ver JTable en ventana dialog

¿Qué quiere decir que no te muestra las columnas?. Si te refieres a la cabecera de las columnas, para que se visualicen debes usar un JScrollPane, que es el que realmente las visualiza.

Código java:
Ver original
  1. JDialgo d =  new JDialog();
  2.     d.add(new JScrollPane(tabla));
  3.     d.setVisible(true);

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 02/06/2013, 05:10
 
Fecha de Ingreso: abril-2013
Mensajes: 9
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Ver JTable en ventana dialog

Gracias chuidiang por su respuesta me sirvió mucho ;)) pero sigo sin tenerlo del todo bien porque no me muestra los campos VARCHAR, mira subo foto.

http://s2.subirimagenes.com/imagen/previo/thump_8470785sin-ttulo.png

lo eh consultado con un amigo y me ha dicho que "No meta los datos en un array. Mételos directamente en el Jtable"
Como seria? pongo Código:
Código:
try{
					Connection unaConexion  = DriverManager.getConnection ("jdbc:odbc:puentejava");
					Statement instruccionSQL = unaConexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

					ResultSet rs = instruccionSQL.executeQuery ("SELECT * FROM Producto");
					DefaultTableModel modelo = new DefaultTableModel();
					JTable tabla = new JTable(modelo);
					// Creamos las columnas.
					modelo.addColumn("idProducto");
					modelo.addColumn("Nombre");
					modelo.addColumn("Marca");
					modelo.addColumn("Precio");
					modelo.addColumn("Stock");
					modelo.addColumn("Observacion");
					modelo.addColumn("IdCategoriaFK");



					JDialog dialog =  new JDialog();
					dialog.setTitle("Tabla Empleado");
					dialog.add(new JScrollPane(tabla));
					dialog.setVisible(true);
					dialog.setSize(400,350);

					// Bucle para cada resultado en la consulta
					while (rs.next()) {
						// Se crea un array que será una de las filas de la tabla.
						Object [] fila = new Object[4]; // Hay 7columnas en la tabla

						// Se rellena cada posición del array con una de las columnas de la tabla en base de datos.
						for (int i=0;i<4;i++)
							fila[i] = rs.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1.

						// Se añade al modelo la fila completa.
						modelo.addRow(fila);
					}


				}catch (Exception ex) {
					ex.printStackTrace();
				}
Gracias,Un Saludo.

Última edición por NoXi24; 02/06/2013 a las 13:22

Etiquetas: dialog, jtable, ventana
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 00:50.