Pessoal qual classe e metodo responsavel que quando o usuario digitar em um textfeild mesmo com o Caps Lock desligado aparece maiusculas?
Também preciso disso, mas para qdo ele digitar a UF!
Vai ser util, com certeza!
Vixe já ralei muito com isso…
Você deve adicionar um KeyListener para o seu campo de texto para tratar isso.
Exemplo:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Listener implements KeyListener {
public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (Character.isLetter(ch)) {
e.setKeyChar(Character.toUpperCase(ch));
}
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
}
E aplique ao seu JTextField:
JTextField campoTexto = new JTextField();
Listener listener = new Listener();
campoTexto.addKeyListener(listener);
Espero ter ajudado.
Essa é a maneira errada de se fazer. Como burlar:
- Dê ctrl+c numa palavra com letras minúsculas;
- Vá até o campo, dê ctrl+v
Ou seja, se seu usuário estiver copiando o valor do campo de um bloco de notas ou excel, seu método fura! O correto é fazer um Document, como descrito no link acima.
Boa amigao Ajudou muito. Vlw mesmo agora se vc poder me da uma força em outro topico lá vlw
Essa é a maneira errada de se fazer. Como burlar:
- Dê ctrl+c numa palavra com letras minúsculas;
- Vá até o campo, dê ctrl+v
Ou seja, se seu usuário estiver copiando o valor do campo de um bloco de notas ou excel, seu método fura! O correto é fazer um Document, como descrito no link acima.[/quote]
Errada!?
Basta mudar o Listener…
Testa aí pra ver se funciona amigo.
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JTextField;
public class Listener implements KeyListener {
public void keyTyped(KeyEvent e) {
char ch = e.getKeyChar();
if (Character.isLetter(ch)) {
e.setKeyChar(Character.toUpperCase(ch));
}
}
public void keyPressed(KeyEvent e) {
boolean validar = false;
if (e.isControlDown()) {
if (e.getKeyCode() == KeyEvent.VK_V) {
validar = true;
}
}
if (e.isShiftDown()) {
if (e.getKeyCode() == KeyEvent.VK_INSERT) {
validar = true;
}
}
if (validar) {
String text = ((JTextField) e.getSource()).getText();
text = text.toUpperCase();
((JTextField) e.getSource()).setText(text);
}
}
public void keyReleased(KeyEvent e) {
}
}
Ok, agora faça o ctrl+c e o ctrl+v com o mouse… (detalhe, o document é imune a todos esses problemas, sem ter que criar flags ou outras gambis, como a que vc fez).
Sem falar que em outros SOs, pode ser que o copiar e colar não sejam com as teclas CTRL ou SHIFT.
[quote=ViniGodoy]Ok, agora faça o ctrl+c e o ctrl+v com o mouse… (detalhe, o document é imune a todos esses problemas, sem ter que criar flags ou outras gambis, como a que vc fez).
Sem falar que em outros SOs, pode ser que o copiar e colar não sejam com as teclas CTRL ou SHIFT. [/quote]
Tratando o evento do mouse:
class ListenerMouse implements MouseListener {
public void mouseClicked(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
//Levando em conta que o botão do mouse que cola é o botão direito (só pra testar)
if (e.getButton() == MouseEvent.BUTTON3) {
int inicioSelecao = ((JTextField) e.getSource()).getSelectionStart();
int fimSelecao = ((JTextField) e.getSource()).getSelectionEnd();
String textoOriginal = ((JTextField) e.getSource()).getText();
String textoAntes = textoOriginal.substring(0, inicioSelecao);
String textoDepois = textoOriginal.substring(fimSelecao, textoOriginal.length());
System.out.println(textoAntes + textoDepois);
Clipboard clipBoard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable t = clipBoard.getContents(new Object());
try {
String texto = (String) t.getTransferData(DataFlavor.stringFlavor);
((JTextField) e.getSource()).setText((textoAntes +texto+ textoDepois).toUpperCase());
} catch (UnsupportedFlavorException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
}
Eu confesso que não conhecia outra forma para tratar isso :oops: e concordo com relação ao SO poder tratar esses eventos com outras teclas.
Agora aprendi a maneira mais correta de se fazer, mas para o que eu precisei usar, a maneira que eu implementei serviu demais pra mim.
Só tentei ajudar e demonstrar que existe outra forma (ainda que não seja tão correta) de se tratar esse evento…
Abraço!
[quote=renanedpedroso]Eu confesso que não conhecia outra forma para tratar isso :oops: e concordo com relação ao SO poder tratar esses eventos com outras teclas.
Agora aprendi a maneira mais correta de se fazer, mas para o que eu precisei usar, a maneira que eu implementei serviu demais pra mim.
Só tentei ajudar e demonstrar que existe outra forma (ainda que não seja tão correta) de se tratar esse evento…
[/quote]
Claro, nem tiro seu mérito de tentar ajudar.
Só ressaltei que era errada para que o colega não pensasse que essa, aparentemente mais simples, é a correta.
(PS: Essa que vc colocou é a maneira clássica de se tentar resolver. Eu já fiz assim, e provavelmente todo mundo que hoje usa o Document fez também, e você só começa a descobrir os problemas tempos depois, quando vc percebe que algum usuário descobriu uma forma de inserir minúsculas na aplicação)
Excelente, aqui funcionou perfeitamente. Valeu galera
No Windows pode usar Colar = Shift+Ins, e Copiar = Ctrl+Ins.