Problemas com requestFocus() e palavras em maiusculo

6 respostas
D

Olá galera salve, salve!!
Seguiinte gente, sou iniciante em java e estou desenvolvendo uma aplicação MDI, até ai blz…tô com uma dúvida simples, porém não consegui desvendar ‘o mistério’.
É o seguinte, na tela principal tem um menu que chama um JDialog ai daquele JDialo chama outro Form de inserção, a chamada esta ok e tal, só que quando abre esse form de inserção eu quero que o campo de txtfiltro (que é para pesquisa) ja esteja com o foco. Mas eu não sei onde colocar esse código, já tentei colocar no topo do form, antes de iniciar qlqr coisa mas não da certo, alguem pode me dar uma luz??
Vi muitos ex. na net mas nestes os componentes foram criados em tempo de execução e eu fiz o oposto, criei os compomentes no form mesmo.
E outra dúvida: Quando o usuário digitar nestes campos eu quero que fique tudo em maiuscula…alguém pode me ajudar???

Vlw gente…aguardo resposta!!!
[]'s

6 Respostas

brunorota

pra ficar em maiusculo eh soh usar o

toUpperCase();

O resto eu não sei :S

D

Vlw Brunorota…mas o problema é onde que eu uso isso???
Pq eu não estou construindo os componentes em tempo de execução entende…ai to perdida…

Help me!!! :?: :?: :?:

R

Na documentação da classe JTextField há um exemplo de como converter para maiúsculo os caracteres digitados pelo usuário (procure o trecho “public class UpperCaseField extends JTextField”):

http://java.sun.com/javase/6/docs/api/javax/swing/JTextField.html

Já para mudar o foco, recomendo usar no construtor do formulário o método .requestFocusInWindow(), onde é um JTextField, JComboBox e por aí vai.

steniobh

D?ora Cole Bernardi:
Vlw Brunorota…mas o problema é onde que eu uso isso???
Pq eu não estou construindo os componentes em tempo de execução entende…ai to perdida…

Help me!!! :?: :?: :?:

Velho muito simples:

No keypressed do seu JTextField coloca o que:

dai toda tecla que usuário digitar ficara em caixa alta.

e para mudar o foco usando enter sem ter de tratar campo a campo vc pode colocar o codigo abaixo ja inicialização do seu form.

Ficaria assim:

public SeuFormOuClasse(JFrame frame)  {
  super(); 
  HashSet<AWTKeyStroke> conj = new HashSet<AWTKeyStroke> (this.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
  conj.add(AWTKeyStroke.getAWTKeyStroke(KeyEvent.VK_ENTER, 0));
}
lina

Oi,

Você poderá utilizar o método requestFocus() para colocar o foco em seu componente.

Para permitir apenas UpperCase na digitação do seu JTextField, o correto seria sobrescrever a interface document:

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

public class UpperCaseDocument extends PlainDocument {
    @Override
    public void insertString(int offset, String str, AttributeSet attr) 
    throws BadLocationException {
      super.insertString(offset, str.toUpperCase(), attr);
    }
}

Conforme o nosso amigo ViniGodoy falou aqui:

[url]http://www.guj.com.br/posts/list/142138.java#766166[/url]

Tchauzin!

D

Oi pessoal…olha so a parte de upperCase eu consegui resolver,tipo depois que validei os campos passei pra upper assim ó:

if((obj.getNome() == null) || (obj.getNome().length() <= 0)){
            Dialogos.mensagemErro("O nome da cidade deve ser informado");
            txtNome.requestFocus();
            return false;
        }
        obj.setNome(obj.getNome().toUpperCase());

O meu problema agora é pra focar o campo certo, tipo, fiz todas as manutenções m JPanel e estou chamando do iDialog e ai ja tentei dentro do metodo initsComponents colocar o foco no 1º campo com requestFocus e tentei tbm o managerFocus mas não deu certoO…ele nao fica com o foco qndo abro o formulário…tá um saco…preciso resolver isso mas ja tentei de tudo…

Alguma luz???

ahhh e obrigado pela ajuda até agora!!!

Abraço!!!

Criado 15 de setembro de 2009
Ultima resposta 26 de out. de 2009
Respostas 6
Participantes 5