Hoy vamos a aprender como se usan los objetos que provienen de la clase TableItem. Con este tipo de objetos se pueden crear rápidamente tablas que consisten de una o más columnas y de uno o más renglones. Cabe mencionar que la clase TableItem es un componente creado por los diseñadores del NetBeans y no es un estándar qué proviene directamente de las clases de Java Micro Edition, esa es la razón del por qué este componente no está en la ayuda estándar de Java.
La figura siguiente muestra como se ve una tabla creada con objetos de tipo TableItem, en un emulador de un celular, con el cursor se puede navegar entre todas y cada una de las celdas de la tabla.
El componente se encuentra en la paleta de componentes. La figura siguiente muestra la ubicación exacta de este componente en el NetBeans, ya se ha visto con otros componentes, para crearlo, basta con arrastrar y soltar en el Form (puedes dar clic en la imagen para verla más grande si lo deseas).
Después de arrastrar y soltar en el Form la tabla, se crea el objeto. La figura siguiente muestra el objeto tableItem en el Form y los pasos que siguen para crear la tabla.
(1) Clic en el objeto TableItem, para seleccionar la Tabla
(2) Se debe elegir un modelo de tabla (table Model) usamos la opción que se muestra “ New SimpleTableModel”
(3) Se da clic en el botón indicado en la figura para crear las columnas y renglones de la tabla.
Realizando lo anterior se muestra un nuevo cuadro de dialogo para crear los renglones y columnas de la tabla. La figura siguiente muestra la creación de una tabla de tres columnas por cuatro renglones.
Siguiendo todos los pasos anteriores ya se tiene lista la tabla ahora lo interesante es ver como se pueden enviar datos a ella.
Enviando datos al objeto TableItem
Para enviar datos a la tabla se usa el objeto simpleTableModel y su método setValue, tal y como se muestra en la sentencia siguiente:
simpleTableModel.setValue(columna, renglón, valorString);
columna = Aqui va el número de columna
renglón = aqui va el número de renglón
valorString = Valor que sedesea que aparezca en la tabla debe ser de tipo String
Por ejemplo la siguiente sentencia envía el número 8 a la columna 3 y el renglón 2
simpleTableModel.setValue( 3, 5, “8”);
Se agrega la instrucción siguiente, para repintar en la pantalla del celular y mostar los cambios agregados a la tabla.
simpleTableModel.fireTableModelChanged();
El método fireTableModelChanged() detecta cuando hay un cambio en algún valor de la celda y repinta la tabla para poder observar ese valor o esos valores
Ejemplo
Realizar un segmento de código para la serie armónica vista en el post anterior para un valor de N=10, enviar los valores que se van generando en cada iteración a una tabla de 2 columnas y 10 renglones, la primer columna debe mostrar el valor de la iteración( 0, 1, 2, 3… 10) y la segunda los cálculos que se van generando de la serie armónica.
Solución
La solución a este problema se analizó en el post anterior, aquí se reproduce completamente el código y se adapta para el valor fijo de N=10
suma=0;
for (int i = 1; i<=10; i++) {
suma = suma + (float) 1/i;
}
stringItem.setText("El resultado de la serie con N=10 es " + suma);
Si se desea mostrar en la tabla, en la columna el valor de la iteración basta con escribir el código siguiente dentro del ciclo de repetición:
simpleTableModel.setValue(0, i-1, ""+i);
La columna es la 0, y el renglón debe iniciar en 0 (por eso el valor de i-1), recuerde que Ia serie empieza en i=1, después simplemente se muestra el valor, ya se había visto esto, la i es entero y para convertirlo a String y poder usarlo en la sentencia, basta con agregar “” + i y listo se convierte a String y se puede usar en la sentencia.
Como la sentencia anterior, estará dentro del ciclo, además se sabe que la i inicia en 1, entonces este código enviará el valor de 0 a la celda (0,0) después el valor de 1 a la celda (0, 1), luego el valor de 2 a la celda (0,2) y así sucesivamente por que la i va cambiando como ya se vio en el post anterior.
De igual forma para mostrar las sumas acumuladas, solo que estas van en la columna 1, la sentencia es la siguiente:
simpleTableModel.setValue(1, i-1, ""+suma);
Al finalizar el ciclo se agrega la instrucción para repintar la tabla con los nuevos valores y listo, el segmento de código con los cambios indicados arriba, se muestra enseguida:
suma=0;
for (int i = 1; i<=10; i++) {
suma = suma + (float) 1/i;
simpleTableModel.setValue(0, i-1, ""+i);
simpleTableModel.setValue(1, i-1, ""+suma);
}
simpleTableModel.fireTableModelChanged();
stringItem.setText("El resultado de la serie con N=10 es " + suma);
La figura siguiente muestra una imagen con un par de pantallas del emulador de teléfonos celulares con la solución de este ejercicio.
El código anterior, lo probe en el celular Sony Ericsson W595 y funciono bien, a excepción de que al presionar el comando para calcular los datos, habia que mover el cursor una vez entre las celdas para actualizarla y ver el resultado.
Si lo desea el lector puede bajar el código completo de este ejemplo, el archivo esta comprimido en formato RAR, da clic aqui para bajarlo. Al descomprimir aparece la carpeta con todos los archivos generados por el NetBeans, cabe mencionar que esta realizado usando la nueva versión del NetBeans la 6.7.1
Este comentario ha sido eliminado por el autor.
ResponderEliminarhola estoy intentando crear una aplicación para que me resuelva el método euler.Es mas o menos asi:
ResponderEliminary1=y0+f(x0,y0)*h
donde "h es una constante" te lo dan al igual que el valor inicial de "y0" ;y "x0" varia dependiendo de h.Ahora el problema es que la función no es la misma y por ende necesito un texdfield donde ingrese la función y me lo lea.
Un ejemplo de este método es el siguiente para mayor comprensión:
f(x,y)=x^2+y donde y(0)=2 ,h=0.2, hallar y(1)
en este caso mi x0=0 siguiendo 5 pasos o iteraciones hasta llegar a 1. osea x0=0,x1=0.2,x2=0.4,x3=0.6,x4=0.8,x5=1
los pasos me lo indica h osea seria 1/0.2=5pasos.
si me dieran como dato: y(1)=2 ,h=0.5 hallar y(4) , serian 4/0.5=8 pasos.donde x0=1,x1=1.5,.....x8=4
Retomando el primer ejemplo de 5 pasos.la secuencia seria lo siguiente:
y1=y0+h*f(x0,yo)
y1=2+0.2*(0^2+2)=2.4
y2=2.4+0.2*(0.2^2+2.4)=2.888
y3=2.888+0.2*(0.4^2+2.888)=3.4976
y4=3.4976+0.2*(0.8^2+3.4976)=4.32512
y5=4.32512+0.2*(1^2+4.32512)=5.390144
como podrás ver la función cambia y no va hacer la misma en cada ejercicio, osea necesito ingresar aparte de y0,h,x0, la función y que netbeans me lea dicha función para que realice los cálculos. Espero tu ayuda , mi correo es
henrysmit15@hotmail.com
, desde ya gracias.
Hola interesante lo que haces y no sabia de esta clase Table; mi consulta es por lo siguiente; que es más óptimo hacer por cada pantalla una clase ejm. pantallaInicial.java, menu.java; o en una clase hacer un grupo de pantallas o todas las pantallas de la aplicación]?
ResponderEliminarHola, primero powerfull, el siguiente post resuelve parte del ejercicio que muestras en el comentario, esperalo mañana sale sin falta.... kakarato.deb: en cuanto a optimizacion no tengo idea que sea mejor, particularmente me agrada dividir el problema en diferentes clases (archivos.java), para proyectos grandes asi lo hago, proyectos mas pequeños puede ser en la misma clase, asi lo veo yo, pero la verdad nunca me he fijado en cual es mas optimo :(
ResponderEliminarsaludos
Hola. Muy interesantes tus clases.
ResponderEliminarDeseo crear una aplicación que me permita ingresar una ecuación, por ejemplo cuadrática, cuyos parámetros sean modificados con las flechas. Es decir, que al iniciar la aplicación aparezca:
"2x^2+3x+1=0" y que me permita navegar entre los coeficientes e incrementar o disminuirlos directamente con las teclas "up", "down", "left" y "right". ¿Podrías decirme cómo hacerlo? Gracias. Gerardo
Hola excelente el contenido
ResponderEliminarestoyh iniciando en el desarrollo aplicaciones para movil
quiero hacer una apicacion para enviar sms a una lista de contactos me gustaria saber si tienes algun ejemplo que me sirva como guia
gracias
David
hola si no es mucha molestia quisiera que hablaras un poco de el uso de databindings en el netbeans o el uso de rms.
ResponderEliminarHola que crees esos temas son un poco avanzados y pues toda via no los voy a colocar en el blog, lamento no poder ayudarte.
ResponderEliminarDoñate
me puedes decir porfa como mostrar datos de una BD empleando una funcion ArrayList desde un servlet en JSP en un table item...Chvr
ResponderEliminarHola intenté abrir el proyecto "series" con NetBeans IDE 6.8 y sale error y tambien hice un simple hola mundo en la 6.8 y al subirlo a mi cell me dice error de operacion. Tal vez me des una idea de lo que puede estar pasando.
ResponderEliminarEs posible agregar mas filas en tiempo de ejecucion?
ResponderEliminarQue pasa si se sobrepasa la cantidad de filas definidas?
Exelente post.
Gracias por compartir
Hola¡¡ no tengo idea si se pueda agregar más filas en tiempo de ejecución, la verdad no he probado ni lo otro de sobrepasar la cantidad de filas, no me da tiempo investigar, apenas puedo lentamente agregar articulos al blog, así que lamento nucho no poder ayudarles como ustedes quisieran :(
ResponderEliminarHola amigo!! una pregunta,, Sabes de alguna funcion en java o mejor dicho de alguna clases o libreria que contenga funciones financieras,...
ResponderEliminarHola.... me puedes ayudar en como definir uno el tamaño de la tabla....
ResponderEliminaryo pido el tamaño de cuantas filas deseo
con tabla.setmodel();
osea si kiero una tabla de 2 columnas con n filas...
hasta ahi todo me sale bn....
pero pero no me dejar insertar un valor valores en las celdas....
osea lo q deseo es q yo mismo puedo definir el tamaño de tabla en tiempo de ejecucion y pueda insertar datos en las celdas....
Hola , esta muy interesante tu ejemplo de como llenar datos a un TableItem pero lo que a mi me esta aquejando ahorita es como obtener los datos de la tableitem que lleno de mi base de datos. soy nuevo en esto asi que porfas solicito ayuda ..
ResponderEliminarGracias
Saludos, No lo quiero hacer de forma grafica como lo explican, pero no se cual api descargar para utilizar el TableItem-
ResponderEliminar