Duvida com JTextField e eventos

2 respostas
P

Na aplicação que estuo desenvolvendo(protocolo de comunicação serial) tenho que verificar se o tamanho do que foi digitado no JTextField é menor que 10, se for tenho que completar com zeros. O meu codigo esta assim:

public void actionPerformed(ActionEvent event) {
		if(event.getSource() == (InterfaceGrafica.enviar)){
			remetente2 = InterfaceGrafica.remetente.getText();
			size=InterfaceGrafica.remetente.getText().length();
			if (size<10) {
				int x = 10-size;
				while (x != 0){
					InterfaceGrafica.remetente.setText(remetente2+0);
					x--;
				}
			}
			System.out.println(remetente2);

O sysout no final é só pra ver como fica o remetente no final…

O problema que estou tendo é o seguinte, no evento do clique do botao enviar é verificado se o size do remetente é 10, se não for eu vejo quanto falta pra chegar em 10 e salvo em x. Se o x for 4 quero adicionar 4 zeros ao conteúdo do JTextField. O problema é que quando clico em enviar e vejo oque foi impresso no console aparece kaio(se eu tiver digitado kaio), se eu clicar de novo no enviar aparece kaio0, de novo kaio00…kaio000… ate completar o limite de caracteres domeu campo que botei como sendo 10… como faço pra ele mostrar logo kaio000000 num clique apenas do botao enviar? Quero salvar no remetente2 kaio000000 para que eu possa colocar isso em uns dos campos do pacote que vou enviar para o remetente via serial utilizando o protocolo que estou desenvolvendo.

2 Respostas

P

Pessoal, consegui… quem tiver uma duvida parecida pode tentar oque eu fiz.

public class MyActionListener implements ActionListener{
	String remetente2;
	String destinatario2;
	String dados2;
	int size;
	int size2;
	int size3;
	public void actionPerformed(ActionEvent event) {
		if(event.getSource() == (InterfaceGrafica.enviar)){
			remetente2 = InterfaceGrafica.remetente.getText();
			size=InterfaceGrafica.remetente.getText().length();
			if(size<10){
				int x = 10 - size;
				while(x != 0){
					remetente2 = remetente2+0;
					x--;
				}
			}
			System.out.println(remetente2);
			InterfaceGrafica.remetente.setText("");
			
			
			destinatario2 = InterfaceGrafica.destinatario.getText();
			size2=InterfaceGrafica.destinatario.getText().length();
			if(size2<10){
				int x = 10 - size2;
				while(x != 0){
					destinatario2 = destinatario2+0;
					x--;
				}
			}
			System.out.println(destinatario2);
			InterfaceGrafica.destinatario.setText("");
			
			
			dados2 = InterfaceGrafica.dados.getText();
			size3=InterfaceGrafica.dados.getText().length();
			if(size3<20){
				int x = 20 - size3;
				while(x != 0){
					dados2 = dados2+0;
					x--;
				}
			}
			System.out.println(dados2);
			InterfaceGrafica.dados.setText("");

		}
	}
}

Até mais… com certeza virei com mais duvidas. kkkkkk Obrigado galera.

Rocklee6544

Acho que era muita mais simples vc pegar O FocusListner

criar uma classe do tipo

package br.com.websart.teste;

import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JTextField;

public class Teste {
	
	JTextField nomeCliente=new JTextField();
	
	class txtFieldNomeClienteListener implements FocusListener{

		@Override
		public void focusGained(FocusEvent e) {
//			se necessário  fazer algo quando 
//			o campo ganha o focu
		}

		@Override
		public void focusLost(FocusEvent e) {
			getNomeCliente().getText().length();
		}
	
	}
	
	public JTextField getNomeCliente() {
		return nomeCliente;
	}

}
Ou vc pode criar uma inner Class que implemente KeyListener e dentro dela aplicar um contador
package br.com.websart.teste;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JTextField;

public class Teste {
	
	JTextField nomeCliente=new JTextField();
	
	class txtFieldNomeClienteListener implements KeyListener{

		@Override
		public void keyPressed(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void keyReleased(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void keyTyped(KeyEvent e) {
			// TODO Auto-generated method stub
			
		}
	
	}
	
	public JTextField getNomeCliente() {
		return nomeCliente;
	}

}
Só registrar o componente no seu listener e pronto.
Criado 2 de fevereiro de 2012
Ultima resposta 3 de fev. de 2012
Respostas 2
Participantes 2