Como usar o KeyEvent para pegar números de duas casas decimais (13 por exemplo) no JavaFX?

Eu gostaria de saber se é possível checar quando a pessoa digita dois números juntos formando um numero de duas casas decimais (Se ele digitar 1 + 3 rapidamente por exemplo).

O porque de eu precisar fazer isso vou explicar:

Lista

Eu fiz um código para quando você digita algum numero ele automaticamente seleciona o item da listview correspondente a esse número digitado (uma forma mais rápida de navegar na listview), porém eu não sei como fazer isso se tiver mais de 9 items, pois a pessoa necessita digitar dois números, não faço a menor ideia de como fazer isso, já pesquisei em alguns lugares porém não entendi, podem me ajudar nisso Programadores de Plantão ? :slight_smile:

Se entendi, a sua ListView seria grande, grande mesmo.
E ao inves do usuario rolar a tela e encontrar o que queira, vc pretende colocar um “Pesquisa” onde ele digita um numero e depois encontra a linha na ListView ?

Se for isso, sem usar uma telinha de Pesquisa a ser disparada com um Enter ou um Botão OK, fica muito dificil saber o final da sequencia digitada, digamos que existam na ListView, sei lá 100.000 itens e o usuario digita 1345, nesse caso ele iria pular primeiro para o
item 1 depois para o 3 depois para o 4 e depois para o 5. Agora se criar uma “Pesquisa” e confirmar com enter ou OK, não terá erro ele irar procurar o numero correto.

Não cara, oque eu fiz foi assim: Como voce pode ver tem o 2 pessoas o 1-keven e o 2-joao, se a pessoa aperta a tecla 2 do teclado automáticante você seleciona o 2-joao.

Do 0 ao 9 beleza, o problema é quando passa disso.

Sim porque é um KeyEvent, se tiver o item 10 por exemplo o cara vai aperta 1 aí vai pro item 1 depois vai apertar 0 vai pro item 0, ou seja ele nunca vai conseguir selecionar o item 10 em diante

Exatamente, e isso em qualquer linguagem ou biblioteca.
Sem colocar uma telinha por cima com um TextField por exemplo, você até pode fazer sem a tal telinha de “Pesquisa”, mas teria que finalizar a sequencia de numeros digitados com uma tecla final, tipo ENTER.

Exatamente, preciso fazer algo para quando por exemplo tiver o item 13 ele aperta o 1 e o 3 Rapidão aí eu pego os dois juntos.

Não posso já tem um textfield para procurar os items

O lance de aperta e ir no item é para facilitar a navegação

Somente se você criar um controle de delay apos a sequencia de teclas digitadas.
Tipo assim, apos digitar o 1 se dar um delay de tantos ms e não for apertada outra tecla
ele considera os numeros até entao digitados e faz a pesquisa.

Como faria isso ? Isso é muito fundamental para o meu projeto você não faz idéia, e quantos Ms seria adequado?

Vai Precisar de Task, Thread, KeyEvent e a logica do controle do Delay.
A cada tecla digitada voce zera o contador do Delay e a contagem recomeça.
Se expirar o tempo que você definiu ele faz a pesquisa automaticamente com os numeros já digitados.

Agora se quiser simplificar, o cabloco digita o(s) numero(s) e finaliza com ENTER.

O meu programa é de scout se aperta o número vai no jogador, aperta a letra do fundamento (tipo g) aí te manda para um spinner (nesse caso g = spinner dos gols) e aperta + para adicionar e - para diminuir, o cara já vai ter que ser rápido nos dedos imagina se tiver que apertar ENTER, aliás quando tempo se recomenda entre os dígitos?

Agora tá ficando mais claro o porque você precisa dessa solução.
Bom, em relação ao tempo, você terá que fazer uns testes, e levar em consideração que existem outras coisas sendo processadas e que inibe a exatidão computacional.
No entanto , por JavaFX usar GPU, isso com certeza refletirá na velocidade de processamento, o que é muito bom, pois o processamento do grafico do jogo, fica isolado e libera a cpu para outros processamentos.

1 curtida

Uns 0.5 SEGUNDOS deve bastar

Parece ser um numero interessante, mas penso que somente testando mesmo.

Tem discord ? Poderia me contactar com você la

E nesse textfield você não pode verificar quando o texto inserido é somente numérico?
Se for uma entrada numérica, posiciona na linha correspondente.

1 curtida

desculpe pela demora é que já marquei a solução e não sei fechar o tópico