como fazer para que os caracteres de um JTextField fiquem em UpperCase de acordo com que o usuario for digitando???
Acho que isso te resolve o problema
public class UpperCaseField extends JTextField {
public UpperCaseField(int cols) {
super(cols);
}
protected Document createDefaultModel() {
return new UpperCaseDocument();
}
static class UpperCaseDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
if (str == null) {
return;
}
char[] upper = str.toCharArray();
for (int i = 0; i < upper.length; i++) {
upper[i] = Character.toUpperCase(upper[i]);
}
super.insertString(offs, new String(upper), a);
}
}
}
Boa noite, estou iniciando no Java, seria possível um pequeno exemplo de como utilizar esta classe?
Obrigado
:wink:
Obrigado amigo.
Nesta mesma classe seria possível limitar a digitação de caracteres no JTextField, ou teria que criar outra?
alguém tem um exemplo?
obrigado
Galera, aí vai um jeito bem simples:
[code]seuJTextFieldAqui.addKeyListener(new KeyListener() {
@Override
public void keyTyped(final KeyEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JTextField campo = (JTextField) e.getSource();
int posicaoCursor = campo.getCaretPosition();
campo.setText(campo.getText().toUpperCase());
if (posicaoCursor != campo.getCaretPosition()) {
campo.setCaretPosition(posicaoCursor);
}
}
});
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});[/code]
O segredo está no invokeLater, que garante que vai atualizar todos os caracteres incluindo o último. Já o setCaretPosition garante que o cursor vá continuar na mesma posição caso vc apague caracteres no meio do campo.
[quote=Fi!]Galera, aí vai um jeito bem simples:
[code]seuJTextFieldAqui.addKeyListener(new KeyListener() {
@Override
public void keyTyped(final KeyEvent e) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JTextField campo = (JTextField) e.getSource();
int posicaoCursor = campo.getCaretPosition();
campo.setText(campo.getText().toUpperCase());
if (posicaoCursor != campo.getCaretPosition()) {
campo.setCaretPosition(posicaoCursor);
}
}
});
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
});[/code]
O segredo está no invokeLater, que garante que vai atualizar todos os caracteres incluindo o último. Já o setCaretPosition garante que o cursor vá continuar na mesma posição caso vc apague caracteres no meio do campo.[/quote][quote]
Como que utiliza esta função? Sendo que em minha aplicação, estou utilizando Swing, ou seja, não estou criando jTextfield na mão, apenas seleciono o jTextField e arrasto para o Formulario.
O exemplo acima deve ser usado dentro de um método, você pode adicionar ele ao construtor da sua classe Swing, desde que os objetos correspondente ao JTextField já tenha sido criado, se vc estiver usando Netbeans e sua interface gráfica para criar o formulário, no construtor deve ter uma chamada de método com o nome initComponents(); você deve colocar o codigo acima abaixo dessa chamada e pronto!