[Resolvido] Seleciona o texto de todos os Jframes ao ganhar foco
5 respostas
kinmaster3
Boa noite,
Minha dúvida é a seguinte: Preciso fazer um jTextField selecione todo o seu conteúdo ao ganhar foco, e remova a seleção ao perder o foco. A solução seria simples:
privatevoidnomedoCampoFocusGained(java.awt.event.FocusEventevt){nomedoCampo.selectAll();//Entrou em foco, selecionou todo o texto
}
privatevoidnomedoCampoFocusLost(java.awt.event.FocusEventevt){nomedoCampo.setSelectionEnd(0);//saiu do foco, perdeu a seleção
}
Porém, eu tenho em torno de 67 campos de texto na minha aplicação e adaptar o código acima para cada uma daria um trabalho tremendo.
Existe alguma classe em java que controle o ganho e perda de foco dentro de um jFrame, e que seja possível inserir o código acima nela? Ou, na hipótese mais árdua, outra forma mais simples de realizar essa tarefa?
Percorrer toda a arvore de elementos recursivamente buscando os JTextField’s seria uma forma. Porem não acho que isso seja muito elegante se vc quiser aplicar isso em toda a sua aplicação. Para fazer isso você pode usar algo como o algoritmo abaixo:
Comecei estudando a dica do Rafael mas fiquei muito perdido, então vou utilizar o código do Allan como ponto de partida. Desde já agradeço pela ajuda, vou estudar esse material e assim que conseguir algum resultado positivo retornarei com a solução.
A
Allanjnofs1 like
Assim como o Rafael_Romao_Bertoni falou você tambem pode usar polimorfismo.
Crie a seguinte classe que herdara de JTextField e toda vez que precisar usar ela vc vai arrastar não da palheta mas da propria classe do Netbeans para dentro do painel (Caso vc esteja realmente usando o NetBeans). Isso realmente funciona o Netbeans entende que esta classe é uma subclasse de Component e coloca no painel normalmente como se estivesse vindo da palheta.
Segue o codigo:
public class MyJTextField extends JTextField implements FocusListener {