Ola!
Não encontrei no fórum exemplos.
Possuo um campo (JtextField), que tem o limite de 04 caracteres e ao ser preenchido com o valor máximo ele passaria para o próximo sem precisar usar enter ou tab.
Poderia me ajudar?
Att.
Salax
Ola!
Não encontrei no fórum exemplos.
Possuo um campo (JtextField), que tem o limite de 04 caracteres e ao ser preenchido com o valor máximo ele passaria para o próximo sem precisar usar enter ou tab.
Poderia me ajudar?
Att.
Salax
Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter).
[quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]
Vou tentar, se conseguir aviso, obrigado.
[quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]
Eventos são péssimas formas de trabalhar com JTextFields. O ideal é usar o Document.
Caso contrário, ele terá problemas com CTRL+V (que só gera 1 keytype) ou com o mouse (que não gera evento de tecla).
[quote=ViniGodoy][quote=lavreh]Você pode monitorar os eventos de teclado (KeyEvent) nos JTextFields, e utilizar o método transferFocus() para focar o próximo campo da janela, caso tenha atingido o limite do campo.
Faça a checagem do limite no método keyTyped() do handler de eventos (KeyAdapter). [/quote]
Eventos são péssimas formas de trabalhar com JTextFields. O ideal é usar o Document.
Caso contrário, ele terá problemas com CTRL+V (que só gera 1 keytype) ou com o mouse (que não gera evento de tecla).[/quote]
Boas…
teria como eu implantar esse evento nessa classe?
[code]/*
package br.com.scontrole.Ascii;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;
/**
*
@author Salamanca
*/
public class NData extends JTextField{
private int maximoCaracteres=-1;// definição de -1
// como valor normal de um textfield sem limite de caracters
public NData() {
super();
addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextFieldKeyTyped(evt);}});
}
public NData(int maximo) {
super();
setMaximoCaracteres(maximo);// define o tamanho máximo
//que deve ser aceito no jtextfield que foi recebido no construtor
addKeyListener(new java.awt.event.KeyAdapter() {
@Override
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextFieldKeyTyped(evt);}});
}
private void jTextFieldKeyTyped(KeyEvent evt) {
String caracteres="0987654321";// lista de caracters aceitos
if(!caracteres.contains(evt.getKeyChar()+"")){// se o caracter que gerou o evento estiver não estiver na lista
evt.consume();//aciona esse propriedade para eliminar a ação do evento
}
if((getText().length()>=getMaximoCaracteres())&&(getMaximoCaracteres()!=-1)){
//if para saber se precisa verificar também o tamanho da string do campo
// maior ou igual ao tamanho máximo, cancela e nao deixa inserir mais
evt.consume();
setText(getText().substring(0,getMaximoCaracteres()));
// esta linha acima é para remover os caracters inválidos caso o usuário tenha copiado o
//conteúdo de algum lugar, ou seja, com tamanho maior que o definido
}//fim do if do tamanho da string do campo
}
public int getMaximoCaracteres() {
return maximoCaracteres;
}
public void setMaximoCaracteres(int maximoCaracteres) {
this.maximoCaracteres = maximoCaracteres;
}
}
[/code]
Up.