Inserir um valor em uma JTextField através de um JButton. [resolvido]
17 respostas
C_Lucas
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.
Pega o que tá no jtextfield e grava numa variavel;
duplica a variavel;
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_Lucas
Obrigado, mas se for uma JFormattedTextField é possível efetuar isso. mesmo ela tendo uma função set.Editable(false) seria indiferente certo?
C_Lucas
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.
pedroroxd
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_Lucas
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.
pedroroxd
Bom, como vc nao tem conhecimento de eventos, vou acreditar que está utilizando o [color=darkblue]Netbeans IDE[/color].
Coloque 1 jTextField na aplicação
Coloque 1 botão na aplicação
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)
Tire o TEXTO (nao o nome) do jtextfield (clica com o botão direito, editar texto, apagado tudo)
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_Lucas
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?
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.
pedroroxd
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_Lucas
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).
pedroroxd
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).
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.
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.
pedroroxd
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:
Muito obrigado pela ajuda e desculpa o excesso de perguntas. Abraço
pedroroxd
o importante é conseguir entender o código…
funcionou certinho? =)
C_Lucas
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.
pedroroxd
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_Lucas
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.