JTextField

Valeu pela dica do MaskFormatter, mas o que eu estou qrendo é o seguinte:

Quando o usuário digitar o caractere ponto, ele não pode aparecer no JTextField e o foco tem que passar pro próximo componente…

Se alguém tiver alguma sugestão…

Adicionar um DocumentListenet ao TextField e fazer
o tratamento…

if (char.equals('.')){ focusToNext();}

Valeu? até… :thumbup:
[]'s

E quando for responder uma pergunta sua mesmo clique no botao
Responder e nao no Criar Novo Topico, ok?

Até… :thumbup:
[]'s

Hum…não entendi muito bem como que faz isso não. Eu estava utilizando o KeyListener, so que na hora que eu mudo o foco o ponto aparece.

Tem jeito de fazer esse ponto não aparecer???

Valeu…

Tirando o ultimo caracter do TextField antes de passar o foco?

Valeu? até… :thumbup:
[]'s

O segredo é colocar um DocumentListener mesmo:

tfSeiLa.getDocument().addDocumentListener(meuDocumentListener);

Implemente no método:

insertUpdate(DocumentEvent e)

…e do DocumentEvent que vem como parâmetro você consegue ver o que foi inserido e tratar o problema.

Retirar o último caractere do JTextField antes de passar o foco não deu certo, ele passa o foco e o caractere não sai. E não entendi o DocumentListener.

Me ajudem, por favor…

Valeu…

Experimenta esta:

public void keyPressed(KeyEvent e) { if(e.getSource() == txt1){ if(e.getKeyCode() == 8 ){ txt2.requestFocus(); return; } } }

No lugar do 8 é 44 ou 46.

[color=red]Mensagem do moderador: ao postar codigos utilize as tags [ code ] [ /code ].[/color]

Esse de colocar o RETURN tb não deu certo… :cry:

Envia o fonte do programa.

Dê uma olhada no código abaixo, quero fazer com o caractere ponto o que estou fazendo com o Enter.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Teste extends JFrame implements KeyListener
{
	JTextField tx1, tx2, tx3, tx4;
	JPanel painel; 
	
	public Teste()
	{
	   setSize(200,200);
	   setTitle("Teste Ponto");
	   painel = new JPanel();
	   tx1 = new JTextField(3);
	   tx2 = new JTextField(3);
	   tx3 = new JTextField(3);
	   tx4 = new JTextField(3);
	   add(painel,BorderLayout.CENTER);
	   painel.add(tx1);
	   painel.add(tx2);
	   painel.add(tx3);
	   painel.add(tx4);
	   
	   tx1.addKeyListener(this);
	   tx2.addKeyListener(this);
	   tx3.addKeyListener(this);
	   tx4.addKeyListener(this);	
	}
	
	public void keyPressed(KeyEvent evento)
	{
		// qro fazer isso com o PONTO (so q ele não pode aparecer)
		if(evento.getKeyCode() == 10)
		{
			if(evento.getSource() == tx1)
			   tx2.requestFocus();
		}   
		// ...   
	}
	
	public void keyReleased(KeyEvent evento) { }
	
	public void keyTyped(KeyEvent evento) {	}
	
	public static void main(String[] args)
	{
		Teste teste = new Teste();
		teste.setVisible(true);
	}
} 

Se alguem puder me ajudar…

Agradeço…

[color=red]Mensagem do moderador: Ao postar codigos use as tags [ code ] [ /code ][/color]

No JTextField não consegui mas no TextField funciona. Creio ser um erro do javax.

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Teste extends JFrame implements KeyListener 
{ TextField tx1, tx2, tx3, tx4; 
  JPanel painel; 

  public Teste() 
  { setSize(200,200); 
    setTitle("Teste Ponto"); 

    painel = new JPanel(); 
    tx1 = new TextField(3); 
    tx2 = new TextField(3); 
    tx3 = new TextField(3); 
    tx4 = new TextField(3); 
    add(painel,BorderLayout.CENTER); 

    painel.add(tx1); 
    painel.add(tx2); 
    painel.add(tx3); 
    painel.add(tx4); 

    tx1.addKeyListener(this); 
    tx2.addKeyListener(this); 
    tx3.addKeyListener(this); 
    tx4.addKeyListener(this); 
  } 

  public void keyPressed(KeyEvent evento) 
  { // qro fazer isso com o PONTO (so q ele não pode aparecer) 
    if(evento.getKeyCode() == 46) 
    { if(evento.getSource() == tx1) 
	  {	evento.setKeyCode((int) KeyEvent.VK_ESCAPE); 
        tx2.requestFocus();
        return;
	  }    
    } 
    // ... 
  } 

  public void keyReleased(KeyEvent evento) { } 

  public void keyTyped(KeyEvent evento) { } 

  public static void main(String[] args) 
  { Teste teste = new Teste(); 
    teste.setVisible(true); 
  } 
} 

[color=red]Mensagem do Moderador: Ao postar codigos use as tags [ code ] [ /code ].[/color]

Com o TextField deu certinho, so que me atrapalhou em outras coisas, pq eu estou usando os métodos setBorder e setDocument nos JTextField’s, qndo rodei o programa acima fiquei animado, mas qndo mudei no meu deu esses erros com esses métodos.

Alguém tem + alguma sugestão??

Valeu ai pelas dicas…

Sugestao: Leia este tópico.

:arrow: http://www.guj.com.br/posts/list/0/27352.java#148285

Valeu? até… :thumbup:
[]'s

Li o tópico, mas aconteceu a mesma coisa que antes, com o TextField funciona, mas com o JTextField não.

Se tiverem + alguma sugestão vou agradecer muito…

Valeu.

Outra dica:
Use o DocumentListener, nao use o KeyListener. :wink:

Valeu? até… :thumbup:
[]'s

Ok, mas eu sou iniciante, seria possível vc colocar um pequeno exemplo do DocumentListener???

Valeu msm pelas dicas… :thumbup:

Experimenta este exemplo e depois me dá o retorno:

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class Teste extends JFrame implements KeyListener
{ JTextField tx1, tx2, tx3, tx4;
JPanel painel;
String tecla;

public Teste()
{ setSize(200,200);
setTitle(“Teste Ponto”);

painel = new JPanel(); 
tx1 = new JTextField(3); 
tx2 = new JTextField(3); 
tx3 = new JTextField(3); 
tx4 = new JTextField(3); 
add(painel,BorderLayout.CENTER); 

painel.add(tx1); 
painel.add(tx2); 
painel.add(tx3); 
painel.add(tx4); 

tx1.addKeyListener(this); 
tx2.addKeyListener(this); 
tx3.addKeyListener(this); 
tx4.addKeyListener(this); 

}

public void keyPressed(KeyEvent evento)
{ // qro fazer isso com o PONTO (so q ele não pode aparecer)
if(evento.getKeyCode() == 46)
{
if(evento.getSource() == tx1)
{ String texto=tx1.getText();
int tam=texto.length();
tecla=texto.substring(0,tam);
tx2.requestFocus();
return;
}
}
// …
}

public void keyTyped(KeyEvent evento) {}

public void keyReleased(KeyEvent evento)
{ if(evento.getKeyCode() == 46)
{ if(evento.getSource()==tx2)
{ tx1.setText(tecla);
}
}
}

public static void main(String[] args)
{ Teste teste = new Teste();
teste.setVisible(true);
}
}

Se fores usar o keyListener, coloque o seu código no keyTyped e após entrar na verificação use o método consume do evento.

public void keyTyped(KeyEvent evento) { 
	if(evento.getKeyChar() == '.') {
		evento.consume();
		if(evento.getSource() == tx1)
 			   tx2.requestFocus();
	}   
}

Falou!!

No exemplo do luizbarbosa o ponto teima em aparecer, mas no exemplo do TedLoprao deu certo. :wink:

Agradeço a todos pelas dicas, todas me ajudaram bastante…

Valeu… :thumbup: