Componete JSpinner - Receber foco +cursor

2 respostas
A

Olá pessoal,

Gostaria que alguém me desse uma ajudinha na seguinte questão:
Adicionei componentes JSpinner a um conteiner (JPanel) e não estou conseguindo fazer com que o foco nem o cursor fiquem aparecendo no mesmo. Utilizei metodos como requestFocus() e transferFocus() dentro do keypressed(keyEvent e) mas não adianta, porém, outros tipos d componentes como JtextFiels e botões o foco vai certinho.
Se eu passar com tab, o foco até vai pro JSpinner, mas o cursor não fica dentro.

Alguem poderia me explicar pq isto pode estar ocorrendo?

OBS:

  • Estou usando o jdk 1.4.2_09.
  • Foi adicionado ao componente JSpinner um ‘keyListener()’;

Um grande abraço,
Aislan

2 Respostas

A

Pessoal, fiz um teste com transferFocus() e, dentro de um componente do tipo JTextField (por ex) c teclar enter tá funcionando, ou seja, o foco vai pro JSpinner e o cursor fica lá dentro.
Em contra-partida, qdo dou enter de dentro do JSpinner o foco não vai pro componente q eu destinei. Detalhe é que na verdade eu conclui que ele não está escutando (keyListener) o JSpinner quando o dou enter de dentro do jspinner, mesmo este estando com um addKeyListener(this) como os demais componentes.
Por acaso, qdo o cursor está dentro do jspinner o keyListener é tratado diferente? Pergunto isso pq se eu der um requestFocus() para um jspinner e sobre ele (SEM aparecer o cursor dentro) eu pressiono ENTER, o foco é transferido para qualquer outro componente, já com o cursor dentro do jspinner, não escuta o keyListener… NO MÍNIMO MTO ESTRANHO ISSO!
Alguém, por favor saberia me explicar isto?

Veja o metodo keypressed:

// KeyListener --------------------------------------------------------------------

public void keyPressed(KeyEvent e) {

if (e.getKeyCode() == KeyEvent.VK_ENTER) {

Component c = e.getComponent();

if (c == spnHora) {

spnMinuto.transferFocus();

}

else if (c == spnMinuto) {

dataInicial.transferFocus();

}

}

}

[]´s
Aislan

A

.

Criado 28 de março de 2007
Ultima resposta 30 de mar. de 2007
Respostas 2
Participantes 1