Bom dia pessoal do guj,
preciso pegar valor de duas jtextfields, somar esses valores e lançar em outra jtextfield…
Quero pegar o que for digitado na getTxtPreco() e na getTxtDesconto() e lançar em getTxtTotalProduto().
Como fazer?
private JTextField getTxtPreco() {
if (txtPreco == null) {
txtPreco = new JTextField();
txtPreco.setBounds(new Rectangle(80, 270, 80, 20));
}
return txtPreco;
}
private JTextField getTxtDesconto() {
if (txtDesconto == null) {
txtDesconto = new JTextField();
txtDesconto.setBounds(new Rectangle(300, 270, 80, 20));
}
return txtDesconto;
}
private JTextField getTxtTotalProduto() {
if (txtTotalProduto == null) {
txtTotalProduto = new JTextField();
txtTotalProduto.setBounds(new Rectangle(215, 310, 80, 20));
}
return txtTotalProduto;
}
Antes de mais nada, carinha, você precisa pensar no “quando”? Quando você quer somar esses valores. Quando se clicar um botão?
Pegar o valor da txtField é fácil. É só usar o método getText(). Daí você converte o texto em um valor numérico, soma e escreve o resultado no total com o método setText().
Mais que isso é entregar o exercício pronto, e isso está me parecendo com “lição de casa”… Posso te ajudar, mas não posso entregar, senão não é válido como exercício…
[quote=abmpicoli]Antes de mais nada, carinha, você precisa pensar no “quando”? Quando você quer somar esses valores. Quando se clicar um botão?
Pegar o valor da txtField é fácil. É só usar o método getText(). Daí você converte o texto em um valor numérico, soma e escreve o resultado no total com o método setText().
Mais que isso é entregar o exercício pronto, e isso está me parecendo com “lição de casa”… Posso te ajudar, mas não posso entregar, senão não é válido como exercício…
[/quote]
Isso mesmo.
Porém, se você já tem o evento, irá funcionar mais ou menos assim:
[code]double preco = Double.valueOf(getTxtPreco().getText());
double desconto = Double.valueOf(getTxtDesconto().getText());
double precoComDesconto = preco - desconto;
getTxtPrecoTotalProduto().setText(String.valueOf(precoComDesconto));[/code]
Valeu!
esqueci de informar que queria sem utilizar botão algum, como se fosse automatico msm…
Atenção - estou usando o MigLayout, mas o exemplo abaixo não depende do MigLayout para você entendê-lo. Depende só do focusLost() (é quase automático, depende só de você mudar o foco para outro controle para que os valores sejam atualizados. )
package guj;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import net.miginfocom.swing.MigLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
public class TesteSomaAutomatica extends JFrame {
private JPanel contentPane;
private JLabel lbl_nota1;
private JLabel lbl_nota2;
private JLabel lbl_soma;
private JLabel lbl_media;
private JTextField txtNota1;
private JTextField txtNota2;
private JLabel lblSoma;
private JLabel lblMedia;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TesteSomaAutomatica frame = new TesteSomaAutomatica();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TesteSomaAutomatica() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new MigLayout("", "[][grow]", "[][][][]"));
contentPane.add(getLbl_nota1(), "cell 0 0,alignx trailing");
contentPane.add(getTxtNota1(), "cell 1 0,growx");
contentPane.add(getLbl_nota2(), "cell 0 1,alignx trailing");
contentPane.add(getTxtNota2(), "cell 1 1,growx");
contentPane.add(getLbl_soma(), "cell 0 2,alignx trailing");
contentPane.add(getLblSoma(), "cell 1 2");
contentPane.add(getLbl_media(), "cell 0 3,alignx trailing");
contentPane.add(getLblMedia(), "cell 1 3");
}
private JLabel getLbl_nota1() {
if (lbl_nota1 == null) {
lbl_nota1 = new JLabel("Nota 1");
}
return lbl_nota1;
}
private JLabel getLbl_nota2() {
if (lbl_nota2 == null) {
lbl_nota2 = new JLabel("Nota 2");
}
return lbl_nota2;
}
private JLabel getLbl_soma() {
if (lbl_soma == null) {
lbl_soma = new JLabel("Soma");
}
return lbl_soma;
}
private JLabel getLbl_media() {
if (lbl_media == null) {
lbl_media = new JLabel("Media");
}
return lbl_media;
}
private JTextField getTxtNota1() {
if (txtNota1 == null) {
txtNota1 = new JTextField();
txtNota1.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
calcular();
}
});
txtNota1.setColumns(10);
}
return txtNota1;
}
private JTextField getTxtNota2() {
if (txtNota2 == null) {
txtNota2 = new JTextField();
txtNota2.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
calcular();
}
});
txtNota2.setColumns(10);
}
return txtNota2;
}
private JLabel getLblSoma() {
if (lblSoma == null) {
lblSoma = new JLabel("");
}
return lblSoma;
}
private JLabel getLblMedia() {
if (lblMedia == null) {
lblMedia = new JLabel("");
}
return lblMedia;
}
private void calcular() {
double val1 = 0;
double val2 = 0;
try {
val1 = Double.parseDouble(getTxtNota1().getText());
} catch (Exception ex) {
}
try {
val2 = Double.parseDouble(getTxtNota2().getText());
} catch (Exception ex) {
}
getLblSoma().setText(String.format("%f", val1 + val2));
getLblMedia().setText(String.format("%f", (val1 + val2) / 2));
}
}