Inserir um valor em uma JTextField através de um JButton. [resolvido]

17 respostas
C

Boa noite.

Bom gostaria de saber se é pssível inserir dados em uma caixa JTextField(ou melhor a caixa é um JFormattedTextField) partindo de um JBUtton, por exeplo ao clicar no botão a JTextField recebe um determinado valor e clicando pela segunda vez esse valor dobra, ou seja valor mais o valor anterior = novo valor e assim sucessivamente.
Criei uma aplicação com um actionperformed e por favor poderim dizer se a uma logica nesse codigo, pois ele da erro na linha 6,7,8.

B_comprar1.addActionListener(  
        new ActionListener(){  
            public void actionPerformed(ActionEvent e) {  
             float B_comprar1;  
                         B_comprar1= (float) 2.80;  
                         if(e.getSource()==B_comprar1)  
                         {F_compra1 +=B_comprar1();}  
                         F_compra1.setValue(B_comprar1);  
  
            }  
        });

Por favor me ajudem. Desde de já agradeço-lhes.

17 Respostas

P
  1. Pega o que tá no jtextfield e grava numa variavel;
  2. duplica a variavel;
  3. seta o conteúdo do jtextfield para a variável.

float valor = Float.parseFloat(meujtextfield.getText()); //pega o valor dele, e armazena na variável valor, que é do tipo flutuante valor*=2; // duplica o valor dele... (é a mesma coisa de valor = valor*2) meujtextfield.setText(String.valueOf(valor)); //seta o texto dele para o valor da variável "valor"

C

Obrigado, mas se for uma JFormattedTextField é possível efetuar isso. mesmo ela tendo uma função set.Editable(false) seria indiferente certo?

C

Ah lendo o codigo pelo que eu entendi ele pegará um valor de dentro da caixa de texto certo? se for isso não vai adiantar no meu caso pois eu preciso jogar um valor para dentro da caixa de texto. Caso esteja errado no meu raciocinio desculpe.

P

Não entendi…
pelo que tinha entendido, vc queria pegar o valor do jtextfield, dobrar ele, e colocar ele denovo lá…
ae eu dissue que faria isso:

B_comprar1.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e) { float valor = Float.parseFloat(meujtextfield.getText()); //pega o valor dele, e armazena na variável valor, que é do tipo flutuante valor*=2; // duplica o valor dele... (é a mesma coisa de valor = valor*2) meujtextfield.setText(String.valueOf(valor)); //seta o texto dele para o valor da variável "valor" } });
Para jogar um valor para caixa de texto, vc faz assim:

meujtextfield.setText("Seu texto aki"); //como é um valor, vc tem que passar ele para string... meujtextfield.setText(String.valueOf(suavariaveldenumeroaki));

C

Então eu entendi o que sr. , escreveu porém eu preciso de um action que ao clicar no botão, o mesmo mandará um valor float para a caixa de texto. Isso é possível, existe esse tipo de aplicação em Java? É que estou tentando fazer um carrinho de compras onde o usuário clique no botão é aparece o valor do produto e se clicar novamente aparecerá um valor somado ao anterior e assim sucessivamente até que eu coloque um uma condição usando if ou while, mais primeiro tenho que aprender a fazer esse botão funcionar. Acho que o código que eu mandei tem uma lógica para isso poderia ver se ele funciona dessa forma? Desde já agradeço.

P

Bom, como vc nao tem conhecimento de eventos, vou acreditar que está utilizando o [color=darkblue]Netbeans IDE[/color].

  1. Coloque 1 jTextField na aplicação
  2. Coloque 1 botão na aplicação
  3. Mude o TEXTO (nao o nome) do botão para: “Acrescentar 14,5” (clica com o botão direito, editar texto, escreve: Acrescentar 14,5)
  4. Tire o TEXTO (nao o nome) do jtextfield (clica com o botão direito, editar texto, apagado tudo)
  5. Clique 2 vezes no botão (vai gerar um código de action performed), mais ou menos assim:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }
6) Dentro dele (onde está o [color=green]//TODO add[/color]…) coloque:

float valor; //cria 1 variável valor, que é do tipo flutuante if (jTextField1.getText().equals("")) {//verifica se não tem nada escrito, se não tiver ele seta o valor pra 0 valor = 0; } else { //senão (dentro do jtextfield tem alguma coisa): valor = Float.parseFloat(jTextField1.getText()); //pega o valor do jtextfield, e armazena na variável valor } valor+=14.5; // adiciona 14,5 ao valor... (é a mesma coisa de valor = valor+14,5) jTextField1.setText(String.valueOf(valor)); //seta o texto dele para o valor da variável "valor"
7) Rode a aplicação.

PS: As chaves não são necessárias, porque só tem 1 linha de código dentro delas… No entanto a Sun recomenda que as use (não me pergunte porque, pq eu não sei, e axo inútil em casos como esse)

C

O cara muito obrigado, mas eu fiz o que sr. me disse porém a primeira linha do codigo o compilador diz que esta errada.
Eu fiz umas modificações somente no valor da variavel “valor”. Por favor verifique o código. se eu usar JFormattedTextField essa aplicação vai funcionar ou é melhor mudar para TextField?

private void B_comprar1.ActionPerformed
        (java.awt.event.ActionEvent evt) {
    float valor;
    if(F_compra1.getText().equals("")){
        valor =0;
    }
    else {valor = Float.parseFloat(F_compra1.getText());
}
valor +=2.80;
       F_compra1.setText(String.valueOf(valor));

Ps: eu uso netBeans e nos menus eu não encontro o menu para alterar o texto como sr. explicou tem um menu chamado “novo observador” que muda o nome do objeto. Eu não sei muito sobre eventos pois estou aprendendo praticamente sozinho, ainda não manjo muito.

P

O código está certo, eu testei aki…
O F_compra1 tem que ser um jTextField, e tá faltando fechar a chave do evento (})
E não precisa me chamar de senhor, pq tenhu só 16 anos! uhAHUhua

C

Foi mal.Você tem 16 anos e manja muito. estudou aonde cara? obrigado ajudou demais. Então está certo só falta mudar a caixa para TextField. Porém eu mudei o nome do botão da forma que eu citei acima, desta forma está coreto? Desculpa incomodar tanto é que nunca vi nada parecido em nenhum livro ou apostila(pelo menos dos que eu estou lendo).

P

Para aprender java facilmente, com simplicidade, exemplos e tudo mais, desde o início até avançado, baixe as apostilas do Caelum!
Caelum é a responsável pela criação desse site, e dá vários cursos pelo brasil, mas sempre deixa as apostilas para fazer download gratuitamente.
Comece pela apostila mais báscica (FJ11).

Veja as apostilas aqui.

C

Vou fazee o download dessa apostila pois me interesso muito pela linguagem e banco de dados Mysql, estou lendo um livro para entender e poder trabalhar lehor com metodos public private e protected. Desculpa incomodar tanto é que preciso muito terminar um aplicativo para escola e esse botão é fundamental. Minha perunta vai parecer a mais idiota possível mais não consigo chegar na solução potanto vou postar o codigo e dizer o erro que da.

private void B_comprar1.ActionPerformed   
        (java.awt.event.ActionEvent evt) {   
    float valor;   
    if(T_compra1.getText().equals("")){   
        valor =0;   
    }   
    else {valor = Float.parseFloat(T_compra1.getText());   
   
valor +=2.80;   
       T_compra1.setText(String.valueOf(valor));
    }

meu compilador diz que falta um parenteses na primeira linha, Por que? Você tinha dito que era só fechar com uma chave o final do codigo porém da erro no final da classe em todos os “tela.add” que uso para adicionar na tela.
Agradeço por toda a ajuda que ja me deu.

P
private  void B_comprar1.ActionPerformed     
         (java.awt.event.ActionEvent evt) {     //abre o parentese do botão
     float valor;     
     if(T_compra1.getText().equals("")){ //abre o parentese do if    
         valor =0;     
     }     //fecha o parentese do if
     else {valor = Float.parseFloat(T_compra1.getText());     //abre o parentese do else
      
 valor +=2.80;     
        T_compra1.setText(String.valueOf(valor));  
     }  //fecha o parentese do botao
não está faltando algo? vc abre o parentese do else, mas não fecha! Basta trocar isso:
else {valor = Float.parseFloat(T_compra1.getText());
Por isso
else {valor = Float.parseFloat(T_compra1.getText()); }
C

Muito obrigado pela ajuda e desculpa o excesso de perguntas. Abraço

P

o importante é conseguir entender o código…
funcionou certinho? =)

C

ta tranqüilo , muito obrigado. Só uma pergunta , bom quando vc pediu para renomear a JButton foi porque vc achou que estou criando o aplicativo usando a ferramenta “gui builder” do netBeans que é só clicar no botão e arrastar para a tela tipo o VB? se for isso não estou fazendo dessa forma estou colocando tudo via código mesmo e acho que foi por isso que não renomei o JButton como vc mandou, se tiver como renomear um JButton mesmo inserindo-o via programação eu não sei todas as funções do netBeans.
Obrigado pela ajuda.

Ps: não sei se vc vai entender o que estou querendo dizer agora.

P

Entendi sim…
no netbeans, quando vc cria a aplicação, dá pra usar o drag and drope (puxa o botão e arrasta pra tela), axei que você estava fazendo dessa maneira, por que a maioria dos iniciantes fazem assim.
Parabéns pra você, o ideal é você colocar tudo via código mesmo! Quando você só “joga” o botão no netbeans, ele cria um bando de código, que é bem chato…
Se você está fazendo tudo via código, não tem porque usar o netbeans!

Use o eclipse, que é uma IDE mais leve, mais rápida, e com muitos atalhos que auxiliam no desenvolvimento (só não tem o gui builder).

Flws !

C

Minha intenção é aprender a liguagem meu professor insistiu para que eu fizesse esse aplicativo em VB pois seria mais fácil porém eu não busco o mais fácil mais o melhor e mais interessante e desenvolver via código é mais interessante. Não usei o eclipse pois tive problemas com as bibliotecas e no site da sun da pra baixar JDK junto com netbeans então achei mais fácil. Abraço e obrigado por toda a ajuda.

Criado 6 de abril de 2010
Ultima resposta 11 de abr. de 2010
Respostas 17
Participantes 2