Esta é a primeira vez que escrevo aqui. Alguém conhece alguma estratégia que possa ser montada para permitir que o usuário possa incluir novas linhas em um JTable com o teclado?
Exemplo: O foco está na última linha, usuário pressiona a seta do cursor para baixo e uma nova linha surge.
Seria similar a alguns grids que encontramos em aplicações Delphi, VB e outras …
Voce pode adicionar um KeyListener à JTable que pega o pressionamento da tecla, cria uma nova linha no seu TableModel, seleciona-a e poe a JTable em modo de edicao na primeira celula. Eh algo assim que vc quer?
Sim, é basicamente isso. A idéia de testar a tecla pressionada até já tinha me ocorrido.
Porém, o principal problema é saber se o foco está na última linha ou não.
Até o momento, só encontrei maneiras de saber se uma ou mais linhas estão selecionadas.
Neste caso, se o JTable só permitir seleção simples, de uma linha só, tudo bem, porque o foco sempre estará na mesma linha selecionada. Mas se quisermos permitir seleção de múltiplas linhas, o foco pode estar em uma outra célula que não pertença a última linha, ainda que a última linha faça parte da seleção. E o objetivo era de que surgisse uma nova linha no final da tabela somente quando o usuário levasse o foco áté a última linha e pressionasse a seta para baixo.
this.addKeyListener(
new KeyListener() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
// Se for a última linha
if (this.getSelectedRow() == this.getModel().getRowCount() -1) {
((AbstractProModel)this.getModel()).addRow();
}
}
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {}
}
);
Sendo que a função addRow() adiciona uma linha em branco…