Como parar a edição com DefaultCellEditor quando um JBtton separado é pressionado
-
22-08-2019 - |
Pergunta
Eu tenho uma tabela com uma TableCellEditor personalizado (DefaultCellEditor estendendo) com um JFormattedTextField como o componente de editor.
Agora eu tenho problema: quando eu pressionar um botão separado durante a edição. Quando o botão é pressionado, os restos de edição "aberto e ativo", enquanto eu quero-o para parar a edição para que as alterações feitas estaria disponível para as operações causados ??pelo botão.
Então, como fazer com que a edição de ser interrompido quando um botão é pressionado distinta. Tentei setFocusLostBehavior (JFormattedTextField.COMMIT) para o JFormattedTextField , mas não parecem ter efeito.
Hope alguém tem algumas boas idéias =)
Solução
Você pode tentar
jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Outras dicas
Graças asalamon74, que funciona muito bem.
Não há debate sobre a coisa de Sun Bug Base de dados: Bug 4724980: JTable: Adicionar API para controlar o que acontece com as edições quando a tabela perde o foco. (também outras entradas de bugs são encontrados). As voltas terminateEditOnFocusLost sobre "comprometer-ou-cancelar" comportamento que podem ser vistos nas fontes Java para a classe JTable $ CellEditorRemover
E sim, é um pouco estranho que não está documentado nas APIs etc ...
Tive também mais problemas com essas coisas, ver a pergunta Java swing: alterar a seleção JTree enquanto editingstopCellEditing (): como obter stopCellEditing () chamado antes TreeListeners:? valueChanged