| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2010 21:41:43
|
Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
|
Olá:
Estou fazendo um teste com JSpinner. Quando clico em "Seta para Cima" ou em "Seta para Baixo" o valor do JSpinner é incrementado ou decrementado em uma unidade. Meu objetivo final é "acelerar" a variação do valor: Quando clicar CTRL + "Seta para Cima" ou CTRL + "Seta para Baixo" o valor deve ser incrementado ou decrementado em 10 unidades, por exemplo. Entretanto as coisas não estão saido como esperado. Se eu Adicionar um KeyListener para o JSpinner nada acontece. Tentei ainda usar este exemplo e este outro no Example Depot (outrora Java Alamanac), usando KeyStroke mas de novo não aconteceu nada. Abaixo, segue-se o código de teste que fiz (feito no NetBeans 6.8 ):
No construtor do JFrame mando imprimir os KeyStrokey registrados. O que aparece é
[ctrl pressed UP, ctrl pressed KP_UP, ctrl pressed DOWN, ctrl pressed KP_DOWN, pressed UP, pressed KP_UP, pressed DOWN, pressed KP_DOWN]
Bem, alguém tem idéia do que está faltando para que o JSpinner consiga ouvir "meus" eventos?
Grato,
Rafael U. C. Afonso
|
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 12:59:47
|
danielfroes
Entusiasta Java
Membro desde: 23/03/2010 12:08:57
Mensagens: 22
Offline
|
Que bagunça o NetBeans faz no código, eu nunca tinha visto hehehe.
Bom, vou dar uma idéia, acho que pode funcionar.
Crie 2 SpinnerModel do tipo SpinnerNumberModel, um com incremento de 1 e outro com 10, assim:
SpinnerModel spnModel1 = new SpinnerNumberModel(0,null,50,1);
SpinnerModel spnModel10 = new SpinnerNumberModel(0,null,50,10);
Quando o CTRL for pressionado (keyPressed) você seta o model para spnModel10:
spnValor.setModel(spnModel10);
Quando o CTRL for solto (keyReleased) você seta o model para spnModel1;
spnValor.setModel(spnModel1);
Não testei, só pensei na solução... espero que ajude!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 14:45:38
|
Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
|
danielfroes wrote:
Que bagunça o NetBeans faz no código, eu nunca tinha visto hehehe.
De fato gostava mais da forma que o Visual Editor do Eclipse organizava o código. Principalmente ele não tem essas frescuras de regiões de edição proibida. Infelizmente ele não é tão sofisticado quanto o Matisse do NB e no momento está com o desenvolvimento estagnado.
danielfroes wrote:
Quando o CTRL for pressionado (keyPressed) você seta o model para spnModel10:
Aí que está todo o problema: Não consigo fazer com que o Spinner "ouça" o teclado. O comportamento padrão do componente é que quando você teclar seta p/cima ou seta p/baixo, o spinner incremente ou decremente em uma unidade. Tentei fuçar no código original do JSpinner mas não consegui descobrir onde é injetado este comportamento.
Quanto a criar dois modelos diferentes, não é necessário. Criei um MouseWheelListtener que quando você usa a roda do mouse o valor do Spinner é incrementado ou decrementado. Mas se junto com a roda você mantém clicado o botão direito do mouse, você pode variar o valor em dez unidade ou mais (você pode configurar o valor desse passo estendido).
danielfroes wrote:
Não testei, só pensei na solução... espero que ajude!
Obrigado de qualquer forma.
|
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 15:49:47
|
danielfroes
Entusiasta Java
Membro desde: 23/03/2010 12:08:57
Mensagens: 22
Offline
|
Entendi o seu problema agora Rafael, fiz uns testes e também não consegui fazer o keylistener funcionar...
O JSpinner é meio estranho, eu também to apanhando pra usar ele, quero desabilitar o editor dele, permitindo que o valor seja alterado apenas pelas setas. Se eu usar setEnable(false) ele desabilita as setas também, tentei desabilitar só o editor mas também não fez nada... Parece tão simples de usar
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 17:48:52
|
ambuzr
JavaChild
![[Avatar]](/images/avatar/b904ef416b3a224449335e0c4e8f60cc.jpg)
Membro desde: 03/06/2008 16:53:41
Mensagens: 106
Offline
|
ei nao falem mau do meu Netbeans ein, amo ele de montao kkkkk
moleza cara, coloca isso depois de
initComponents();
do codigo do Netbeans
vlwwwwwwwwww
|
java & linux, apanhando mais aprendendo
---------------------------------------------------
Quando rebaixas alguem, automaticamente voce se curva para rebaixar portanto voce tambem es rebaixado, porem quando levantas alguem automaticamente voce tambem es levantado |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2010 20:39:59
|
Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
|
ambuzr wrote:ei nao falem mau do meu Netbeans ein, amo ele de montao kkkkk
moleza cara, coloca isso depois de
initComponents();
do codigo do Netbeans
vlwwwwwwwwww
ambuzr:
Funcionou perfeitamente. A diferença é que coloquei o código não depois do initComponents() mas sim dentro. Mais especificamente na parte em que o NB a personalização do código depois da inicialização do componente.
Grato,
Rafael U. C. Afonso
|
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 09:48:36
|
danielfroes
Entusiasta Java
Membro desde: 23/03/2010 12:08:57
Mensagens: 22
Offline
|
Boa dica ambuzr! Eu estava tentando pegar esse TextField! Com isso consegui resolver outro problema que eu tinha (desabilitar só a TextField do Spinner). Valeu!
|
|
|
 |
|
|