| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 21:00:58
|
laurovitor
Entusiasta Java
![[Avatar]](/images/avatar/88c744249e42dc37b812e4c0deb53da0.png)
Membro desde: 25/08/2010 21:56:39
Mensagens: 20
Localização: Maringá-PR
Offline
|
ola.
estou tendo uma dificuldade aqui que a seguinte...
o meu sistema nao utiliza mouse so teclado e as teclas sao predefinidas... quando eu adiciono o JList na minha tela ele ganha o focu de tudo e os eventos do teclados para de responder.... se eu utilizo o setFocusable(false) o sistema roda belezinha porem o meu problema e o seguinte... eu queria utilizar duas teclas para mover entre os itens... tipo Q = sobe, W = desse.... eu setei pra que ele ele marcasse os itens pelo jList1.setSelectedIndex(i); isso tmb funciona mais a barra de rolagem nao vai junto tipo se tiver espaço para mostra apenas 5 e tiver 10 itens vc consegue mover entre ele mais vc sempre vai ficar vendo os 5 pq a barra de rolagem nao acompanha os itens.... eu queria saber se tem algum tipo de setFocus... ou next()... alguma coisa do tipo pra mover a barra de rolagem junto e sempre mnostrar o item selecionado.
This message was edited 1 time. Last update was at 04/12/2010 09:05:29
|
StudioWeb Maringá - O Melhor da web e na StudioWeb http://www.studiowebmaringa.com.br Contato: (Skype) lauro_vitor / (MSN) lauro_vitor@hotmail.com email: laurovitor@studiowebmaringa.com.br / contato@studiowebmaringa.com.br
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 21:21:27
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
http://www.guj.com.br/posts/list/92862.java#497384
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 21:54:30
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 21:58:41
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Note que "setSelectedItem", conforme você deve ter percebido, não é a mesma coisa que mover com as setas.
Eu simplesmente copiei a mesma ação executada quando se usa a tecla de seta para cima para a tecla "q".
Exercício - Veja que se você teclar Q com a tecla Shift apertada não vai funcionar (não vai mover a seta). Por que isso ocorre?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 22:00:12
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Outra dica: em muitos componentes do Swing, adicionar um KeyListener simplesmente não funciona do jeito que você quer. Muitas vezes você precisa mexer no ActionMap/InputMap (como fiz agora), ou então, em campos de entrada de dados, mexer no Document. No caso de um JComboBox, a situação é mais complicada ainda, e é por isso que é um pouco difícil fazer um AutoComplete que funcione.
This message was edited 1 time. Last update was at 02/12/2010 22:00:53
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 22:03:38
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Eu usei uma coisa que normalmente não recomendo, que é um DefaultListModel. Só fiz isso para simplificar o exemplo; normalmente eu usaria um ListModel baseado em um dos Models do GlazedLists ( http://publicobject.com/glazedlists )
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/12/2010 23:11:07
|
laurovitor
Entusiasta Java
![[Avatar]](/images/avatar/88c744249e42dc37b812e4c0deb53da0.png)
Membro desde: 25/08/2010 21:56:39
Mensagens: 20
Localização: Maringá-PR
Offline
|
sim testei o codigo acima ele ate funciona porem eu nao posse deichar o JList com foco e ai q entra o problema...
o codigo tem q funcionar com o ....
em estado false.
|
StudioWeb Maringá - O Melhor da web e na StudioWeb http://www.studiowebmaringa.com.br Contato: (Skype) lauro_vitor / (MSN) lauro_vitor@hotmail.com email: laurovitor@studiowebmaringa.com.br / contato@studiowebmaringa.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 00:48:00
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
OK, não tinha visto que a JList não tinha foco. Então:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 00:49:11
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
A janela em si tem de ter o foco (isso é porque janelas sem foco não recebem eventos de teclado). Mas o JList não precisa ter o foco.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 00:55:21
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
Repare, ao rodar o exemplo, que o foco continua sempre no botão OK, mesmo que se tecle q ou w. Obviamente, se você teclar um espaço, vai ativar o botão OK, como esperado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 13:50:41
|
laurovitor
Entusiasta Java
![[Avatar]](/images/avatar/88c744249e42dc37b812e4c0deb53da0.png)
Membro desde: 25/08/2010 21:56:39
Mensagens: 20
Localização: Maringá-PR
Offline
|
ok vou implementar este exemplo no meu codigo pra ver se funciona pq eu testei esse exemplo q vc me passo e funciono certinho agora quero ver se vai funcionar no meu codigo...
|
StudioWeb Maringá - O Melhor da web e na StudioWeb http://www.studiowebmaringa.com.br Contato: (Skype) lauro_vitor / (MSN) lauro_vitor@hotmail.com email: laurovitor@studiowebmaringa.com.br / contato@studiowebmaringa.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 14:02:21
|
laurovitor
Entusiasta Java
![[Avatar]](/images/avatar/88c744249e42dc37b812e4c0deb53da0.png)
Membro desde: 25/08/2010 21:56:39
Mensagens: 20
Localização: Maringá-PR
Offline
|
Ok testei aqui deu certinho... muito obrigado pela ajuda.... e meio chato ser iniciante e ter q ficar perguntando... mais em breve espera poder estar ajudando os outros aki no forum tmb...
=]
so mais uma duvida tem alguma maneira de centralizar o texto da JList?
|
StudioWeb Maringá - O Melhor da web e na StudioWeb http://www.studiowebmaringa.com.br Contato: (Skype) lauro_vitor / (MSN) lauro_vitor@hotmail.com email: laurovitor@studiowebmaringa.com.br / contato@studiowebmaringa.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/12/2010 14:14:35
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
No meu "technical debt" está, por exemplo, escrever no meu blog sobre todas as formas de não usar um KeyListener.
Até agora não escrevi, por exemplo, como é que se usa um "try with resources" com um java.sql.Connection.
Como vocês devem ter aprendido na marra, o comportamento de teclas com os componentes do Swing raramente pode ser customizado usando-se um mero KeyListener.
|
|
|
|
 |
|
|