2010-01-14 13 views
6

Tengo una JTable simple, hay dos columnas que importan: cantidad y valor (enteros). Cada vez que el usuario ingresa una nueva fila o actualiza una, cada valor de las filas se debe multiplicar por cantidad, los resultados se suman y la suma del resultado se muestra en un JLabel fuera de JTable. Parece bastante simple. Excepto que no tengo idea de qué evento debería buscar. ¿Algo como "cambio de valor celular"? Cuando hago clic con el botón derecho en JTable en NetBeans no veo ningún evento ni lo reconozco;) De todos modos, antes de encontrar una solución noobish extraña, pensé que podría preguntar aquí cuál es la forma correcta de hacerlo :)¿Cuál es el evento apropiado para los cambios en cualquier celda de JTable?

Respuesta

6

debe agregar TableModelListener como se describe here.

también, en su oyente vez que haya actualizado el valor de los otros valores de la celda mediante programación tendrá que llamar para que model.fireTableCellUpdated oscilación sabe acerca de los cambios

+1

' getModel() 'es el método operativo. De hecho, Dejando a un lado el código de demostración cursi, es mucho mejor tratar con el modelo, luego construir una tabla con él, pero nunca llamar a 'getModel()'. –

3

Finalmente he conseguido encontrar cómo hacerlo en NetBeans con toda la protección de código, etcétera. Haga clic con el botón derecho en JTable en la Vista de diseño, Propiedades, luego en la pestaña Código, y luego agregue su código en la sección Pre-Adding Code (código evaluado antes de agregar la tabla al contenedor o algo así).

El código exacto que funciona para mí es la siguiente:

table.getModel().addTableModelListener(
new TableModelListener() 
{ 
    public void tableChanged(TableModelEvent evt) 
    { 
     // here goes your code "on cell update" 
    } 
}); 

Soy consciente de que Tom, anteriormente, nunca se sugirió llamar getModel() pero soy demasiado nuevo para Java para entender por qué (el cuidado de explicar , por favor ..?) :) y es sólo un ejemplo de todos modos, estoy añadiendo esta respuesta sólo para mostrar cómo hacerlo en NetBeans (pstanton gracias por responder lo que hacer). Porque encontré tanta gente preguntando esto en internet y no hay respuestas reales (aparte de "copie su código protegido del área protegida de NetBeans y luego personalice su tabla).

Cuestiones relacionadas