Tenho na tela um JTable e 2 JButtons (OK e Cancelar).
Eu vinculei o ENTER para o OK e o ESC para o Cancelar.
Se o foco esta fora do JTable tudo funciona. Mas quando entra no JTable so sai com TAB mesmo, e o ENTER dentro dele muda de linha, e o ESC nao faz nada. Como eu posso enganar o JTable para nao tratar ENTER e ESC?
Eu fiz este codigo, alterando o meu que estava fazendo o InputMap/ActionMap no JButton e passando para o rootPane.
Contudo, o comportamento continua o mesmo. Parece que o
o teclado fica “sob o dominio” do JTable, e eu tenho que sair
de dentro dele para as coisas funcionarem.
JTable tabela = new JTable();
KeyAdapter keyAdapter = new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
e.consume();
// chame aqui o metodo que processa o evento do botao
// processarCliqueBotaoOK();
} else if (e.getKeyCode() == KeyEvent.VK_ESC) {
e.consume();
// chame aqui o metodo que processa o evento do botao
// processarCliqueBotaoCANCELAR();
}
}
};
tabela.addKeyListener(keyAdapter);