Adicionar linhas em JTable

Olá

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 …

Desde já obrigado,
Gabriel C. Oliveira

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? :slight_smile:

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.

Se tiver mais alguma sugestão agradeço.

Gabriel C. Oliveira.

Aqui funcionou assim…

Extendendo de JTable.

		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… :slight_smile:

:smiley: :smiley:

Realmente …

A sua idéia funciona. Agora consegui desenvolver um algoritmo para resolver o meu problema.

Muito obrigado.

Gabriel.