TextField para float

5 respostas
pitiko

Eu to tentando pegar o valor do TextField e passar ele como float, estou usando o seguinte código:

janela.getBean().setEstadoA(Float.parseFloat(((JTextField)e.getSource()).getText()));

Mas ele não roda de jeito nenhum, quando eu coloco o valor dentro de um Jbutton e coloca o o seguinte código:

janela.getBean().setEstadoA(Float.parseFloat(((JButton)e.getSource()).getText()));

Ele roda.

O método setEstadoA está da seguinte forma:

public void setEstadoA(float a){
	estadoA = a;
	notificar();
}

Obrigado.

5 Respostas

viniciusalvess

você pode usar autoboxing ,

new Double(String s);
ViniGodoy

O source de um evento é quem disparou o evento. Se o seu evento é disparado ao clicar num botão, então esse source será um JButton.

Agora, vc não vai pegar sempre do JTextField de estado? Então pq seu código não é algo bem mais simples, assim?

janela.getBean().setEstadoA(Float.parseFloat(txtEstado.getText()));
ViniGodoy

Só uma correçãozinha. Isso aí não é auto-boxing. Isso aí é uma chamada comum ao construtor.

Autoboxing é o recurso que o java tem que automaticamente converte tipos primitivos (double, int) nos seus wrappers (Double, Integer, etc).
E auto-unboxing é o processo contrário:

double pi = 3.1415; Double piobj = pi; //Autoboxing. Equivalente a Double piobj = Double.valueOf(pi); double pi2 = piobj; //Auto-unboxing. Equivalente à double pi2 = piobj.doubleValue();

Antes do Java 5, escrever aqueles códigos longos equivalentes era a única opção. :frowning:

pitiko

Valeu. Deu certo!

viniciusalvess

Só uma correçãozinha. Isso aí não é auto-boxing. Isso aí é uma chamada comum ao construtor.

Autoboxing é o recurso que o java tem que automaticamente converte tipos primitivos (double, int) nos seus wrappers (Double, Integer, etc).
E auto-unboxing é o processo contrário:

double pi = 3.1415; Double piobj = pi; //Autoboxing. Equivalente a Double piobj = Double.valueOf(pi); double pi2 = piobj; //Auto-unboxing. Equivalente à double pi2 = piobj.doubleValue();

Antes do Java 5, escrever aqueles códigos longos equivalentes era a única opção. :(

Obrigado Viny pela correção !
mas me expressei mal , se ele fizesse dessa forma abaixo , ocorreria auto-boxing.
Eu deveria ter explicado melhor antes !

janela.getBean().setEstadoA(new Double(txtEstado.getText()));
Criado 20 de abril de 2011
Ultima resposta 20 de abr. de 2011
Respostas 5
Participantes 3