2010-10-07 19 views
9

Tengo una JTable de la siguiente manera.Force JTable para "confirmar" datos al modelo mientras todavía está en modo de edición

alt text

Así, mientras que el JTable se encuentra todavía en el modo de edición (hay un cursor del teclado parpadeando en la columna de Dividendos), hacer clic en OK directamente no va a cometer los datos en el modelo de mesa. Al hacer clic en Aceptar simplemente cierra el cuadro de diálogo.

Necesito presionar ENTER explícitamente, para comprometer los datos en el modelo de tabla.

Mientras JTable se encuentra todavía en el modo de edición, antes de que el cuadro de diálogo de cierre, ¿hay alguna manera de que pueda decir la JTable diciendo: "Hey, es hora de que confirme los cambios en su modelo"

El código fuente de este cuadro de diálogo es el siguiente Dialog Box Source Code. Mire jButton1ActionPerformed para el código ejecutado cuando se presiona OK.

+0

Probablemente haya utilizado un IDE para generar el código GUI. Pero podrías cambiar los nombres de las variables por algo más amigable. Muy difícil de leer cuando todo lo que está etiquetado es button1 button2 label1 – Sean

+0

Lo siento. Mire jButton1ActionPerformed para el código ejecutado cuando se presiona OK. –

Respuesta

15

no estoy seguro de si va a trabajar (hubiera sido bueno tener un SCCE), pero intente esto:

TableCellEditor editor = table.getCellEditor(); 
if (editor != null) { 
    editor.stopCellEditing(); 
} 
4

para que toda la parada estable edición por completo en cualquier estado (o de edición no), puede llamar a la edición detenida:

table.editingStopped(new ChangeEvent(table)); 

De esta forma no es necesario verificar si hay editores/estado/etc.

3

Table Stop Editing da un par de enfoques.

+0

Ese sitio web está teniendo consejos y trucos bastante útiles para la programación de Swing. ¿Puedo saber que eres el autor? –

+1

Sí, para muchas de las entradas, pero Darryl también ayuda. – camickr

+0

Buen trabajo. Ya lo puse en mi delicioso :) –

Cuestiones relacionadas