Cómo detener la edición con DefaultCellEditor cuando independiente JBtton se pulsa
-
22-08-2019 - |
Pregunta
Tengo una tabla con una costumbre TableCellEditor (que se extiende a DefaultCellEditor) con un JFormattedTextField como el editor de componentes.
Ahora tengo problema:cuando pulse un botón separado, mientras que la edición.Cuando se pulsa el botón, el editor se queda "abierto y activo", mientras que me gustaría es dejar de edición para que los cambios realizados se estaría disponible para las operaciones causadas por el botón.
Entonces, ¿cómo causa la edición de ser detenido cuando un distinto se pulsa el botón.He intentado setFocusLostBehavior(JFormattedTextField.COMMIT) para el JFormattedTextField pero no parecen tener efecto.
La esperanza de que alguien tiene algunas buenas ideas =)
Solución
Puede intentar
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Otros consejos
Gracias asalamon74, que funciona bastante bien.
Hay un debate sobre la cosa en Sun Bug Base de datos: Bug 4724980: JTable: Añadir API para controlar lo que ocurre con las ediciones mesa cuando pierde el foco. (también otras entradas de errores se encuentran). El terminateEditOnFocusLost depende de conducta "commit-o cancelar" que se puede ver en las fuentes de Java en la clase JTable $ CellEditorRemover
Y sí, es un poco extraño que no está documentado en las API, etc ...
Había también más problemas con estas cosas, ver la pregunta Java swing: cambiar la selección JTree mientras editingstopCellEditing (): cómo conseguir stopCellEditing () llamada antes TreeListeners:? valueChanged