requestFocus() => campo todo marcado

5 respostas
E

Ola,
Gostaria de configurar o segte comportamento para todos os campos (textfields, passwordfields, combos, etc): ao usuario mudar de um campo para outro, ao inves do cursor ficar piscando no final da string, selecionar o campo inteiro (todo marcado em outra cor, exatamente como faz o Ctrl+A dentro do campo). Isso porque fica mais rapido quando o usuario deseja apagar o campo e colocar outro dado.

5 Respostas

brlima

basta adicionar um FocusListener no componente, e quando receber o foco ( focusGained() ) seleciona o texto. :smiley:

public class MyTextField extends JTextField{ public MyTextField(){ addFocusListener( new FocusAdapter(){ public void focusGained(FocusEvent e){ MyTextField.this.selectAll(); } public void focusLost(FocusEvent e){} }); } }

flw!

E

OK, isso resolve quando é apenas um componente.
Agora, se eu tiver um monte de componentes na tela, e quero o mesmo comportamento em todos. Nao ha algo mais generico do proprio frame/panel que controlasse seus componentes, ou eu teria que fazer um evento generico chamado por todos os componentes, mas tendo que associar a cada um deles?

keller

seuTextField.requestFocus();
seuTextField.selectAll();

apenas um resumo… ( fiquei meio perdido no cod. do Bruno :lol: )

keller

Sim Sr.!

FocusListener
fl_textfield = new FocusListener()
{
     public
     void focusGained(FocusEvent ev)
     {
        // o que eu faco quando ganho foco?
      }
      public
      void focusLost(FocusEvent ev)
      {
        // o que eu faco quando perco o foco ?
       }
};

seuTextField1.addFocusListener(fl_textfield);
seuTextField2.addFocusListener(fl_textfield);
seuTextField3.addFocusListener(fl_textfield);

Mais ou menos assim… :slight_smile:

brlima

“gui”:
Sim Sr.!

FocusListener
fl_textfield = new FocusListener()
{
     public
     void focusGained(FocusEvent ev)
     {
        // o que eu faco quando ganho foco?
      }
      public
      void focusLost(FocusEvent ev)
      {
        // o que eu faco quando perco o foco ?
       }
};

seuTextField1.addFocusListener(fl_textfield);
seuTextField2.addFocusListener(fl_textfield);
seuTextField3.addFocusListener(fl_textfield);

Mais ou menos assim… :)

Sim , essa era a idea tb :smiley:
A primeira ideia era, se eu quisesse um TextField que piscace quando eu olhasse pra ele, eu ontaria uma classe que extende o JTextField pra usar ela aonde eu quisesse ele piscando pra mim.

Claro, nesse caso como a alteração vc pode fazer com base no componente, fica até uma opção bacana ter um listener criado de fora que controla isso, dai eh só adiciona-lo nos componente que vc quer que pisque…rssss :smiley:

Flw!

Criado 21 de setembro de 2004
Ultima resposta 22 de set. de 2004
Respostas 5
Participantes 3