JTextField

19 respostas
diego2005

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…

19 Respostas

keller

Adicionar um DocumentListenet ao TextField e fazer
o tratamento…

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

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

keller

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

Até… :thumbup:
[]'s

diego2005

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…

keller

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

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

ciczan

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.

diego2005

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…

L

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]

diego2005

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

L

Envia o fonte do programa.

diego2005

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]

L

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]

diego2005

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…

keller

Sugestao: Leia este tópico.

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

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

diego2005

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.

keller

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

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

diego2005

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

Valeu msm pelas dicas… :thumbup:

L

Experimenta este exemplo e depois me dá o retorno:

import javax.swing.<em>;

import java.awt.</em>;

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);

}

}
TedLoprao

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!!

diego2005

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:

Criado 18 de agosto de 2005
Ultima resposta 19 de ago. de 2005
Respostas 19
Participantes 5