Adicionar zeros automaticamente

E ai galera, blz?

intaum, como jah postei uma duvida aki no forum e fui atendido, tenhu mais uma! auhauhauhauhua

por exemplo, eu fiz um programa de cadastro de moradores,
e fiz um esqueminha pra que na tela de cadastro, ele mostrasse qual seria o codigo daquele morador q eu ia cadastrar.
até ai tudo bem, o problema é q no meu banco de dados e campo codigo está com zerofill, ou seja, se o codigo é 1 ele vai automaticamente para 001
e na tela de cadastro tbm saía assim os dados, porem quando adicionei o comando para ele pegar o ultimo codigo de cadastro e adicionar +1, para q ele mostrasse qual seria o codigo daquele cadastro, ele retorna os codigos sem os zeros,
exemplo, 001 ele mostra 1, 014 ele mostra 14, 100 (obviamente) ele mostra 100, porem queria q até o cadastro 99 ele colocasse os zeros automaticos antes do numero, até atingir 3 casas decimais, ou seja caso seja do 1 ao 9 adicionasse dois zeros e de 10 a 99 apenas um zero, e apartir dai, não precisasse, pois o codigo jah teria 3 casas decimais.

como eu faço isso???

jah tentei inclusive com o jFormattedTextField, e também no camando tentei ao inves de adicionar 1, adicionar 001, mas não adianta…

vcs podem me ajudar??

Obrigado

não sei se é a melhor maneira, mas vc poderia usar o String.format
por exemplo:

int i = 1; String.format("%03d",i);
vai retornar uma string no formato 001;
o tamanho do numero eh no minimo 3, e preenche com 0 a esquerda caso o numero tenha menos que 3 digitos.

desculpa a ignorancia mas aonde eu coloco tal comando?

PreparedStatement pstm = null;
        ResultSet rs = null;
        String consultamorador = "Select (codigo) from moradores where codigo like ?";

        int codigomorador;
        int proximocadastro;
        

            AcessoMySQL mysql = new AcessoMySQL();
            try {
                pstm = (PreparedStatement) mysql.conectar().prepareStatement(consultamorador);
            } catch (SQLException ex) {
                Logger.getLogger(CadastrarMoradores.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                pstm.setString(1, "%");
            } catch (SQLException ex) {
                Logger.getLogger(CadastrarMoradores.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                rs = pstm.executeQuery();
            } catch (SQLException ex) {
                Logger.getLogger(CadastrarMoradores.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                while (rs.next()) {
                    codigomorador = rs.getInt("Codigo");
                    proximocadastro = codigomorador + 001;
                                                                                                            <---- COLOCO AQUI???
                    jTextField1.setText(String.valueOf(proximocadastro));
                    

                }
            } catch (SQLException ex) {
                Logger.getLogger(CadastrarMoradores.class.getName()).log(Level.SEVERE, null, ex);
            }

Só uma critica que não tem a ver com sua pergunta, mas pode ser importante futuramente:

Cuidado com essa tecnica de gerar o código antes de gravar, pois se o seu sistema for funcionar em rede, um cliente pode gerar o código e um um outro gerar o mesmo código e na hora da gravação pode haver erro de chave primária duplicada.

Desculpe a intromissão, mas achei importante a dica.

[quote=pablouu]não sei se é a melhor maneira, mas vc poderia usar o String.format
por exemplo:

int i = 1; String.format("%03d",i);
vai retornar uma string no formato 001;
o tamanho do numero eh no minimo 3, e preenche com 0 a esquerda caso o numero tenha menos que 3 digitos.[/quote]

Também acredito que essa forma seja a melhor e mais prática

[quote=jhowazure]desculpa a ignorancia mas aonde eu coloco tal comando?
[/quote]

Depende de como vc quer q sua aplicação funcione

eu colocaria no evento de que quando o JTextField perde o focus, assim ele formata automaticamente

no lugar de:

 jTextField1.setText(String.valueOf(proximocadastro)); 

vc coloca:

 jTextField1.setText(String.format("%03d",proximocadastro)); 

[quote=thiago_spdvr]Só uma critica que não tem a ver com sua pergunta, mas pode ser importante futuramente:

Cuidado com essa tecnica de gerar o código antes de gravar, pois se o seu sistema for funcionar em rede, um cliente pode gerar o código e um um outro gerar o mesmo código e na hora da gravação pode haver erro de chave primária duplicada.

Desculpe a intromissão, mas achei importante a dica.[/quote]

Cara, vlw a dica!!
Só q não é o programa que define o codigo, ele apenas le o ultimo e adiciona +1, portanto ele “prevê”, caso alguem cadastre ao mesmo tempo, não haverá problema, pois um dos cadastros será 014 por exemplo e outro será 015, pois quem define não é o programa e sim o banco de dados, embora mostre 014, um deles será 015 caso haja cadastro ao mesmo tempo.

[quote=pablouu]no lugar de:

 jTextField1.setText(String.valueOf(proximocadastro)); 

vc coloca:

 jTextField1.setText(String.format("%03d",proximocadastro)); 

Pow cara, vlw!!!

deu certinho!!

toh iniciando em java, num sabia onde por o codigo!!

vlw’s man!!