[RESOLVIDO]Conversão de Inteiro para setText

33 respostas
X

Bom dia desenvolvedores, estou com uma dúvida que não consegui achar no forum e nem na internet, é um pouco especifico.

Estou tentando converter String para inteiro utilizando um campo. Vou colar o codigo para ficar mais claro:

private void tbClientesLinhaSelecionada(JTable tb){
        if(tb.getSelectedRow() != -1){
            txtNome.setText(clientes.get(tb.getSelectedRow()).getNome());
            txtEndereco.setText(clientes.get(tb.getSelectedRow()).getEndereco());
            txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero())); //Problema está aqui
            
            
        }
    }

Preciso criar este método para validar um campo JTable…

Mas o TextField txtNumero é inteiro… Preciso que o txtNumero.setText receba um valor inteiro…
Já tentei colocar Integer.parseInt, Integer.valueOF… (int)… Mas não obtive sucesso…

Serve para: quando eu clico na tabela aonde está listado os usuários salvo no meu banco, ele libera nos campos: txtNome(textField), txtEndereco(textField), txtNumero os dados do cliente para mim alterar…

[b]O campo que está dando problema é o txtNumero.setText pois ele recebe um numero inteiro e na hora de setar no banco a alteração, ele da erro porque ele precisa da resposta em String… E eu não estou conseguindo converter de forma correta…

Este é o problema…[/b]

Alguém pode me ajudar? Pode ser que a resolução seja estupida, mas eu não sei, busquei informação antes de abrir um tópico. Quem puder me ajudar…

Obrigado.

[size=18]Solução do problema:[/size]

por

lsouza13:
txtNumero.setText(String.valueOf(clientes.get(tb.getSelectedRow()).getNumero()));

Resolvido.

33 Respostas

Rodrigo_Sasaki

Acredito que seu problema seja justamente o oposto, converter de Inteiro para String, tente passar pra String antes do setText String texto = String.valueOf(1);Só pra constar, você não precisa fazer um número desses realmente ser inteiro, no endereço o número pode ser uma String mesmo.

X

É que no textfield txtNumero irá receber um valor inteiro… Poderia ter especificado este campo como String no inicio do projeto, mas não iria aprender este modo de conversão tão cedo…

Eu conseguindo achar a solução para esta conversão, não terei problemas futuros quanto utilizar outros tipos como double, float etc…

Tem outro trecho do meu programa que eu consegui a conversão e é esse:

private void cadastrarCliente(){
        if(verificarCampos()){
            
            ClienteBean cliente = new ClienteBean();
            cliente.setNome(txtNome.getText().trim());
            cliente.setEndereco(txtEndereco.getText().trim());
            cliente.setNumero(Integer.parseInt(txtNumero.getText().trim())); //Aqui deu certo... No problema que estou enfrentando no primeiro post, que não está...
Rodrigo_Sasaki

o método setText recebe uma String, não um inteiro, portanto você tem que converter para String para que funcione

X

Como eu faço dentro deste contexto:

private void tbClientesLinhaSelecionada(JTable tb){
        if(tb.getSelectedRow() != -1){
            txtNome.setText(clientes.get(tb.getSelectedRow()).getNome());
            txtEndereco.setText(clientes.get(tb.getSelectedRow()).getEndereco());
            txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero())); //<-- Como ficaria o código aqui convertendo para String o número inteiro que recebe...?

Como ficaria o código?
?

Rodrigo_Sasaki
é como eu disse acima:
// Convertendo um int para String
int num = 1
String texto = String.valueOf(num);

// Ou se for um Integer já fica mais fácil
Integer integerNum = 1;
texto = integerNum.toString();
L

Esse ‘clientes’ é um objeto de uma classe que você definiu?

Qual a assinatura desse método ‘get’?

O Rodrigo esclareceu bem aí a questão de int -> String e vice-versa.

dofun12

Ou …

//Integer para String
Integer numero = 0;
String a = numero.toString();
//String para Integer
String abc = "0";
Integer numero = Integer.parseInt(abc);
dofun12

//ficaria assim : private void tbClientesLinhaSelecionada(JTable tb){ if(tb.getSelectedRow() != -1){ txtNome.setText(clientes.get(tb.getSelectedRow()).getNome()); txtEndereco.setText(clientes.get(tb.getSelectedRow()).getEndereco()); txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero().toString()));

X

O “cliente.get” é um objeto List(Classe onde está os métodos get e set para manipulação)…

public int getNumero() { return numero; } public void setNumero(int numero) { this.numero = numero; }

Sim… Eu entendi a conversão… Mas no contexto que eu preciso, que é converter um inteiro para o “txtNumero.setText” que eu não estou entendendo como fazer… Essa é minha dúvida aqui no fórum…

X

dofun12:
//ficaria assim : private void tbClientesLinhaSelecionada(JTable tb){ if(tb.getSelectedRow() != -1){ txtNome.setText(clientes.get(tb.getSelectedRow()).getNome()); txtEndereco.setText(clientes.get(tb.getSelectedRow()).getEndereco()); txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero().toString()));

Já tentei… Diz que: “int cannot be dereferenced” “Circundar com…”
traduzindo “int não pode ser de referenciada”

Está tenso… Já tentei de tudo para esse campo converter e nada por enquanto!!

dofun12

Tenta isso…

String codigoCliente = clientes.get((tb.getSelectedRow()).getNumero()).toString();
txtNumero.setText(codigoCliente);
L

Ou isso:

String codigoCliente = String.valueOf(clientes.get((tb.getSelectedRow()).getNumero()));  
txtNumero.setText(codigoCliente);
X

dofun12:
Tenta isso…

String codigoCliente = clientes.get((tb.getSelectedRow()).getNumero()).toString(); txtNumero.setText(codigoCliente);

lsouza13:
Ou isso:

String codigoCliente = String.valueOf(clientes.get((tb.getSelectedRow()).getNumero())); txtNumero.setText(codigoCliente);

Nada… Eu tive que comentar esta linha e continuar o código… porque senão ia atrasar tudo!! :confused:

dofun12

Mas qual o erro que dá?

X

O mesmo…

Diz que: “int cannot be dereferenced” “Circundar com…”
traduzindo “int não pode ser de referenciada” …

Sinistro…

Estou esperando um brother me passar o email do meu professor para mandar isso para ele… Se tiver solução posto aqui… Mas por enquanto… Se alguém souber…

dofun12

Se puder,posta o erro completo.

L

Além de postar o erro completo…

Separe o código pra verificarmos onde está realmente o erro…

Ao invés de escrever:

txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero().toString()));

Escreva:

int tmpInt = clientes.get((tb.getSelectedRow()).getNumero();
if (tmpInt != null) {
    String tmpStr = String.valueOf(tmpInt);
    txtNumero.setText(tmpStr);
} else {
    txtNumero.setText("");
}

E poste o erro completo depois.

X

Ele da erro na linha quando eu tentei fazer a forma indicada aqui, a sua e a do lsouza que era parecidas…

E o netbeans só diz isso que: “int cannot be dereferenced” “Circundar com…”
traduzindo “int não pode ser de referenciada”

que eu acho que a conversão está errada…

Este método

private void tbClientesLinhaSelecionada(JTable tb){
        if(tb.getSelectedRow() != -1){
            txtNome.setText(clientes.get(tb.getSelectedRow()).getNome());
            txtEndereco.setText(clientes.get(tb.getSelectedRow()).getEndereco());
            txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero().toString())); //Problema aqui

Serve para: quando eu clico na tabela aonde está listado os usuários salvo no meu banco, ele libera nos campos: txtNome(textField), txtEndereco(textField), txtNumero os dados do cliente para mim alterar…

O campo que está dando problema é o txtNumero.setText pois ele recebe um numero inteiro e na hora de setar no banco a alteração, ele da erro porque ele precisa da resposta em String… E eu não estou conseguindo converter de forma correta…

Este é o problema…

L

toString() não funciona para primitivos.

Para isso você precisa usar ou

new String(valorIntPrimitivo)

ou

String.valueOf(valorIntPrimitivo)
X

lsouza13:
toString() não funciona para primitivos.

Para isso você precisa usar ou

new String(valorIntPrimitivo)

ou

String.valueOf(valorIntPrimitivo)

Ja tentei… Continua dando o mesmo erro que a int não pode ser referenciada…

L

Então faça

int tmpInt = clientes.get((tb.getSelectedRow()).getNumero();  
    if (tmpInt != null) {  
        String tmpStr = String.valueOf(tmpInt);  
        txtNumero.setText(tmpStr);  
    } else {  
        txtNumero.setText("");  
    }

E informe em que linha dá o erro…

X

lsouza13:
Então faça

int tmpInt = clientes.get((tb.getSelectedRow()).getNumero();  
    if (tmpInt != null) {  
        String tmpStr = String.valueOf(tmpInt);  
        txtNumero.setText(tmpStr);  
    } else {  
        txtNumero.setText("");  
    }

E informe em que linha dá o erro…

int tmpInt = clientes.get((tb.getSelectedRow()).getNumero(); //Erro aqui: int não pode ser de referencia...   
            if (tmpInt != null) {                                                 //Erro aqui: Tipos incomparaveis: int e <null>
                String tmpStr = String.valueOf(tmpInt);    
                txtNumero.setText(tmpStr);    
            } else {    
            txtNumero.setText("");

Erro nas 2 primeiras linhas do seu codigo… descritos acima…

dofun12

Talvez o netbeans ta zuado,tenta reiniciar ele

L

Posta os erros em inglês por gentileza.

X

Reiniciei agora o PC… Eu sei que deveria estar utilizando o eclipse… Mas vou testar essa mesma implementação no eclipse/WindowsBuilder quando terminar essa no netbeans…

Quantidade de código que o netbeans gera é exorbitante…

X
int tmpInt = clientes.get((tb.getSelectedRow()).getNumero();    //Erro aqui: int cannot be dereferenced
            if (tmpInt != null) {    //Erro aqui: incomparable types: int and <null>
    String tmpStr = String.valueOf(tmpInt);    
    txtNumero.setText(tmpStr);    
} else {    
    txtNumero.setText("");    
}

Feito.

L

Kra, eu já sei o que é.

São esses parenteses aí.

Pois o erro é de vc tentar chamar um método a partir de um int primitivo.

Tá faltando um parentese.

L

Faça:

int tmpInt = clientes.get(tb.getSelectedRow()).getNumero();

que vai ver que só esta linha já vai funcionar.

X

lsouza13:
Faça:

int tmpInt = clientes.get(tb.getSelectedRow()).getNumero();

que vai ver que só esta linha já vai funcionar.

Ah meu garotoooo!!! Java Geek purim!!

//txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero();//Problema aqui... Comentei...
            
           //sua solução:
            int tmpInt = clientes.get(tb.getSelectedRow()).getNumero();
            String tmpStr = String.valueOf(tmpInt);      
            txtNumero.setText(tmpStr);

Funcionou… Eu não estava conseguindo alterar no banco, porque precisava da linha do txtNumero funcionando corretamente…
Está funcionando…

Seria possível fazer esta solução dentro da linha com problema “txtNumero.setText( clientes.get((tb.getSelectedRow()).getNumero();”

utilizando um tipo:

txtNumero.setText(String.valueOf(clientes.get((tb.getSelectedRow()).getNumero());

aqui deu erro… Sabe um método utiizando String.valueOF para incluir nesta linha?
?

Porque a parti disso, teria uma solução limpa para qualquer tipo primitivo que utilizasse nos campos de cadastros…

Obrigado. Meu programa voltou a funcionar com sua solução!!

L

Veja só o que tava acontecendo:

Substitua tb.getSelectedRow() por qualquer número na linha abaixo:

txtNumero.setText(String.valueOf(clientes.get((tb.getSelectedRow()).getNumero());

Veja o que tava sendo gerado:

txtNumero.setText(String.valueOf(clientes.get((3).getNumero());

getNumero() não pertence ao numero retornado, e sim ao que é retornado em um objeto da lista…

Logo fica o seguinte:

txtNumero.setText(String.valueOf(clientes.get(tb.getSelectedRow()).getNumero());

Testa aí!

X

Deu PAU!! Está passando sem dar erro… Mas não consegue alterar o Campo txtNumero…

Altera… quando salva, e abre novamente o cadastro, o campo não foi alterado…

:confused:

obs: Testando sua nova indicação!!

X

lsouza13:
Veja só o que tava acontecendo:

Substitua tb.getSelectedRow() por qualquer número na linha abaixo:

txtNumero.setText(String.valueOf(clientes.get((tb.getSelectedRow()).getNumero());

Veja o que tava sendo gerado:

txtNumero.setText(String.valueOf(clientes.get((3).getNumero());

getNumero() não pertence ao numero retornado, e sim ao que é retornado em um objeto da lista…

Logo fica o seguinte:

txtNumero.setText(String.valueOf(clientes.get(tb.getSelectedRow()).getNumero());

Testa aí!

txtNumero.setText(String.valueOf(clientes.get(tb.getSelectedRow()).getNumero()));

AGORA SIM!!

Perfeito!

Poderei utilizar agora os tipos primitivos diferentes double, float, long etc que agora graças a você eu tenho como converter corretamente!!

Geek Java!!

Muito Obrigado.

Topico Resolvidissimo!!

Valeu lsouza13

L

Valeu, um abraço.

Criado 28 de novembro de 2012
Ultima resposta 28 de nov. de 2012
Respostas 33
Participantes 4