Estou com uma dúvida.
Tenho um jComboBox que tem apenas Masculino e Feminino, mas eu queria que isto não fosse para o banco de dados, gostaria que fosse ---->>>M - pra masculino e F - Femino, pois o campo do banco é do tipo Char.
Utilizo NetBeans 6.5, existe como resolver este problema.???
Clicando com o diretiro do mouse sobre este componente, vi que existe muita propriedade, mas não encontrei algo desse tipo.
Então é isso gostaria .Que o valor mostrado fosse uma String e fosse para o banco um CHAR.
Me Ajudem por favor, pois parece ser simples, mas estou um trabalhão.
[code]public final class Sexo {
public static final MASCULINO = new Sexo(‘M’);
public static final FEMININO = new Sexo(‘F’);
private static final String WRONG_CHAR = “O sexo não pode ser diferente de ‘F’ ou ‘M’”;
public Sexo ValueOf(char sexo) {
if (sexo == ‘M’ || sexo ==‘m’)
MASCULINO;
else if (sexo == ‘F’ || sexo ==‘f’)
FEMININO;
else
throw new IllegalArgumentException(WRONG_CHAR);
}
public Sexo ValueOf(String sexo) {
if (sexo.toUpperCase.equals(“M”));
MASCULINO;
else if (sexo.toUpperCase.equals(“F”))
FEMININO;
else
throw new IllegalArgumentException(WRONG_CHAR);
}
private final char sexo;
private Sexo(final char sexo) {
if (sexo == ‘M’ || sexo ==‘m’)
this.sexo = ‘M’;
else if (sexo == ‘F’ || sexo ==‘f’)
this.sexo = ‘F’;
else
throw new IllegalArgumentException(WRONG_CHAR);
}
public enum Sexo {
MASCULINO('M', "Masculino"), FEMININO('F', "Feminino");
private char curto;
private String completo;
private Sexo(char curto, String completo) {
this.curto = curto;
this.completo = completo;
}
@Override
public String toString() {
return completo;
}
public char toChar() {
return curto;
}
public static Sexo getSexo(char c) {
for (Sexo s : Sexo.values()) {
if (s.toChar() == Character.toLowerCase(c)
|| s.toChar() == Character.toUpperCase(c)) {
return s;
}
}
throw new IllegalArgumentException("O sexo não existe.");
}
public static Sexo getSexo(String sexo) {
for (Sexo s : Sexo.values()) {
if (s.toString().equalsIgnoreCase(sexo)) {
return s;
}
}
throw new IllegalArgumentException("O sexo não existe.");
}
}
Você pode acessar os sexos através da chamada:
Sexo.MASCULINO;
// ou
Sexo.FEMININO;
E com os métodos getSexo você pode pegar um sexo pelo char que o representa ou pelo seu nome completo. Por exemplo:
Sexo s = Sexo.getSexo('M'); // retorna masculino
Sexo s2 = Sexo.getSexo("feminino"); // retorna feminino
Sexo s3 = Sexo.getSexo('U'); // lança um IllegalArgumentException
Você pode facilmente adicionar esses objeto em um JComboBox, uma vez que basta adicioná-los e o método toString() será chamado para a representação (ou seja, aparecerá o nome legível) e pode resgatar o char correspondente através do método getChar().
Dá pra fazer mais simples também. Simplesmente vc pega a String (“Masculino” ou “Feminino”), converte ela para um array de char e pega somente o primeiro caractere (‘M’ ou ‘F’). Segue o código:
[code]
//array de char temporário
char temp[] = new char[1];
//declaração de String para teste
String sexo = “Masculino”;
//transforma String em array de char
sexo.getChars(0, 1, temp, 0);
//pega somente o primeiro char que é o que interessa
char bancoDados = temp[0];
//exibe o resultado no console
System.out.println(bancoDados);
//Teste com outro valor de String:
sexo = "Feminino";
sexo.getChars(0, 1, temp, 0);
bancoDados = temp[0];
System.out.println(bancoDados);[/code]
Saída no console:
M
F
Daí na tua aplicação tu usa String sexo = combo.getText(); pra retornar o valor selecionado pelo usuário.
Espero ter ajudado.
Abraço!
[quote=dfmartins]Dá pra fazer mais simples também. Simplesmente vc pega a String (“Masculino” ou “Feminino”), converte ela para um array de char e pega somente o primeiro caractere (‘M’ ou ‘F’). Segue o código:
[code]
//array de char temporário
char temp[] = new char[1];
//declaração de String para teste
String sexo = “Masculino”;
//transforma String em array de char
sexo.getChars(0, 1, temp, 0);
//pega somente o primeiro char que é o que interessa
char bancoDados = temp[0];
//exibe o resultado no console
System.out.println(bancoDados);
//Teste com outro valor de String:
sexo = "Feminino";
sexo.getChars(0, 1, temp, 0);
bancoDados = temp[0];
System.out.println(bancoDados);[/code]
Saída no console:
M
F
Daí na tua aplicação tu usa String sexo = combo.getText(); pra retornar o valor selecionado pelo usuário.
Espero ter ajudado.
Abraço![/quote]
Bom… se é só pra pegar a primeira letra basta usar o charAt(0) e resolvido. A forma apresentada é no caso de ele querer ter objetos que representam ambos os sexos e que possam ser adicionados a componentes Swing.