Como usar o KeyEvent para pegar números de duas casas decimais (13 por exemplo) no JavaFX?
18 respostasResolvido
javafxjava
K
keven2
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).
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 ?
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.
K
keven2
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.
J
j-menezes
Do 0 ao 9 beleza, o problema é quando passa disso.
K
keven2
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
J
j-menezes
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.
K
keven2
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.
K
keven2
Não posso já tem um textfield para procurar os items
K
keven2
O lance de aperta e ir no item é para facilitar a navegação
J
j-menezes
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.
K
keven2
Como faria isso ? Isso é muito fundamental para o meu projeto você não faz idéia, e quantos Ms seria adequado?
J
j-menezes
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.
K
keven2
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?
J
Solucao aceita
j-menezes1 like
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.
K
keven2
Uns 0.5 SEGUNDOS deve bastar
J
j-menezes
Parece ser um numero interessante, mas penso que somente testando mesmo.
K
keven2
Tem discord ? Poderia me contactar com você la
S
staroski1 like
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.
K
keven2
desculpe pela demora é que já marquei a solução e não sei fechar o tópico