Estou com um problema que não consegui resolver. Tenho uma classe que estende JTable e implementa o metodo changeSelection que é para quando uma célula receber o foco, o texto ja ficar selecionado, mas quando digito enter na célula primeiro eh dado um “commit” na célula para só depois o foco ser enviado para a proxima célula. Alguém poderia dar uma ideia de como fazer com que o usuário digite enter na célula e o foco ja vá direto para a próxima celula? desde ja agradeço.
InputMap im = ao_table.getInputMap(ao_table.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke lo_key_enter = KeyStroke.getKeyStroke("ENTER");
im.put(lo_key_enter, im.get(KeyStroke.getKeyStroke(KeyEvent.VK_GREATER, 0)));
Action
enterAction = new AbstractAction()
{
public void actionPerformed(ActionEvent evt)
{
// Requisita o foco para a outra celula.
};
ao_table.getActionMap().put(im.get(lo_key_enter), enterAction);
}
Olá lina, é o seguinte, eu ja tinha feito o enter passar para a célula do lado, o meu problema é que quando o texto está selecionado e eu aperto enter, a celula é “commitada” pra só no segundo enter ela pular para a célula do lado. Então, pular para a linha do lado eu ja consegui, o problema é que eu quero que o foco vá direto para a célula do lado no primeiro enter, dando o commit direto e pulando direto para a próxima célula. Se você puder me ajudar te agradeço.
Arlei
Oi lina, tem que ser editável, porque nela o usuário vai digitar diversas informações. Tens alguma dica para mim substituir uma JTable por outro componente que pode ter uma linha abaixo da outra igual uma jtable? obrigado pela atenção
Arlei
Outro componente que faz isso… acho que não…
mas você poderia tirar a celula editavel e para mudar/alterar o valor
criar um botão ou então na ação do duplo click etc…
Pense em mudar a maneira de editar um valor da celula e não em mudar o componente.
Olá Lina estou tentando usar o seu código mas nao consigo, ele da erro no ultimo código…
postarei pra voces me ajudarem…
public void TableEnterAction(JTable jTable1) {
InputMap im = jTable1.getInputMap(jTable1.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
KeyStroke lo_key_enter = KeyStroke.getKeyStroke("ENTER");
im.put(lo_key_enter, im.get(KeyStroke.getKeyStroke(KeyEvent.VK_GREATER, 0)));
Action enterAction = new AbstractAction()
{
public void actionPerformed(ActionEvent evt)
{
// Requisita o foco para a outra celula.
}
jTable1.getActionMap().put(im.get(lo_key_enter), enterAction);
}
}
O erro está nessa linha aqui… [color=red] jTable1.getActionMap().put(im.get(lo_key_enter), enterAction);[/color]