Int+String em um campo obrigatoriamente!

11 respostas
B

Boa tarde pessoal, to com uma pequena duvida creio que simples de se resolver eu tenho um jtextfield que recebe tanto int como string, e gravo no meu banco o conteudo desse jtextfield normalmente, porem queria saber como faço para obrigar a conter int+string no campo tipo se eu digita apenas abc ele n grava mas se eu digitar abc321 ele aceitar entende? obrigada pela atencao :oops:;

11 Respostas

CrOnNoS

Não me vem a cabeça uma forma simples de fazer isso (na minha pelo menos) sem analizar cada caractere da string e comparar com seus valores unicode.
Não podem ser dois campos separados ?
E tem que checar se não é caractere especial também ?

Tiburcio_Mancha

verdade, de forma simple só em dois campos separados, depois se realizava a concatenação

B

N, tem q ser em um componente pq tipo é uma jpasswordfield que ira receber senha e nesse campo e obrigatorio numeros e letras entende? eh ai q esta minha duvida como fazer uma obrigatoriedade de o jpasswordfield nao operar se se conter numeros e letras!

CrOnNoS
Well, acabei de postar sobre a forma que falei em outro tópico que seria essa:
public static void main(String[] args) {

		char a = 'a';
		char z = 'z';
		char A = 'A';
		char Z = 'Z';
		char um = '1';
		char nove = '9';

		System.out.printf("a = %d\nz = %d\nA = %d\nZ = %d\n1 = %d\n9 = %d\n",
				(int) a, (int) z, (int) A, (int) Z, (int) um, (int) nove);

	} // main

Pegando o (int) de um char, você recebe o valor Unicode dele do qual você poderia usar para fazer as checagens.

B

entendi mais ou menos ai teria que criar o char para todas as letras? de A a Z? de 1 a 9 ? teria algum otro exemplo e muito obrigado pela sua atencao

CrOnNoS

Não para todas, você vai precisar comparar 3 ranges apenas.
O valor unicode de ‘a’ até ‘z’ e ‘A’ até ‘Z’ mostra que tem caracteres.
O valor de 0 até 9 mostra que tem números.

Executando o código que coloquei antes você obtém esses ranges:
a = 97
z = 122
A = 65
Z = 90
1 = 49
9 = 57

97 - 122 = caracteres minúsculos
65-90 = caracteres maiúsculos
49-57 = números

Basta pegar cada caractere do password agora e comparar com esses valores

black_fire

Segue exemplo que como criar um compoente para validação automática.

PS: Não precisa reinventar a roda use o StringUtils da Apache Commons para verificar se é Letra ou Número.
http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html
http://commons.apache.org/

Abraço,
Rodrigo

import java.awt.Toolkit;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import javax.swing.text.PlainDocument;

import org.apache.commons.lang.StringUtils;

/**
 * Exemplo de validação do Text para placa de um carro. Também possível usar uma
 * Expressão Regular para deixar mais genérico.
 * 
 * @author Rodrigo G. Tavares de Souza
 */
public class ExemploTextPlaca extends JTextField {
	
	public static void main(String[] args) {
		ExemploTextPlaca txtPlaca = new ExemploTextPlaca(20);
		JFrame frm = new JFrame("Exemplo Placa");
		frm.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		frm.add(txtPlaca);
		frm.pack();
		frm.setVisible(true);
		
		
	}

	/**
	 * @see JTextField#JTextField()
	 */
	public ExemploTextPlaca() {
		super();
	}

	/**
	 * @see JTextField#JTextField(int)
	 */
	public ExemploTextPlaca(int columns) {
		super(columns);
	}
	
	@Override
	protected Document createDefaultModel() {
		return new PlainDocument() {

			@Override
			public void insertString(int offs, String str, AttributeSet a)
					throws BadLocationException {
				ExemploTextPlaca thiz = ExemploTextPlaca.this;

				// Passa tudo para maiusculo
				// pode-se fazer um controle aqui
				// com enum
				// criando um setCase(UPPER|LOWER)
				str = str.toUpperCase();

				// Verificando o total
				String tmpStr = thiz.getText() + str;

				// Validando uma placa de carro
				// onde os três primeiro caracteres
				// são string e os últimos são números
				// e o tamanho é 7 (3 Letras e 4 números
				if (tmpStr.length() > 7) {
					Toolkit.getDefaultToolkit().beep();
					return;
				}

				if (tmpStr.length() <= 3) {
					// Tres primeiros devem ser obrigatóriamente
					// letra
					if (!StringUtils.isAlpha(str)) {
						Toolkit.getDefaultToolkit().beep();
						return;
					}
				} else {
					// Se não são os três primeiros
					// são os quatro últimos números
					// que devem ser números
					if (!StringUtils.isNumeric(str)) {
						Toolkit.getDefaultToolkit().beep();
						return;
					}
				}

				// Se não passou em nenhum return
				// insere o texto no componente
				super.insertString(offs, str, a);
			}
		};
	}

}
B

esse string utils serve apenas para verificacao de numeros e letras ou ele tem mais funcionalidades?

black_fire

Tem muito mais funcionalidades…
Dá um olhada no link que tem todas as funções…
Abraço,

Marky.Vasconcelos

Ou então com Regex voce pode verificar isso.

B

nao consegui ;/ tentei usar a collection compareTo mas n deu muito certo oq devoi usar para comparar com as 3 ranges?

Criado 16 de agosto de 2009
Ultima resposta 18 de ago. de 2009
Respostas 11
Participantes 5