Olá pessoal…
Estou fazendo o meu primeiro programa com interface grafica e estou com um problema. É o seguinte:
Tenho um JFrame (modulo_Vendas) que exibe o resultado da consulta a um banco de dados e calcula o valor que deverá ser pago pelo cliente e a quantidade de itens que foram comprados. Até ai, tudo bem.
Mas após calculados esses valores, eles são enviados para a classe chamada encerra_Compra que armazena o subtotal e a quantidade de itens comprados e deveria exibi-los em outro JFrame (modulo_Pagamento).
public class encerrar_Compra {
/** Creates a new instance of encerrar_Compra */
private float subtotal;
private int itens;
public encerrar_Compra(float subtotal, int qtd_itens) {
setTotal(subtotal);
setItens(qtd_itens);
}
public encerrar_Compra(){
// construtor vazio
}
public void setTotal( float subtotal ){
this.subtotal = subtotal;
}
public void setItens ( int qtd_itens ){
itens = qtd_itens;
}
public float getTotal(){
return subtotal;
}
public int getItens(){
return itens;
}
}
Só que quando eu tento exibir o resultado do método getTotal em um JTextField na classe modulo_Pagamento, o valor aparece 0.0!
Tentei fazer com que ele exibisse o valor de getTotal em um JLabel na classe modulo_Vendas e funcionou! só não funciona quando eu tento fazer ele aparecer na outra janela.
Na classe modulo_Vendas, monto ele assim:
encerrar_Compra fechar_conta = new encerrar_Compra(subtotal, itens);
E na classe modulo_Pagamento, que não está funcinando, faço assim:
encerrar_Compra fechar_conta = new encerrar_Compra(); // uso o construtor que está vazio
float total = fechar_conta.getTotal();
jTextField1.setText(Float.toString(total));
Olá Herm?io vc não está conseguindo acessar o objeto da outra classe pois está criando 2 objetos distintos de uma mesma classe. Preciso de mais informações sobre como está sendo feito sua chamada nos módulos vendas e pagamentos para dar uma solução mais precisa. Vc poderia colocar o atributo subtotal como private, ai qualquer instância da classe encerrar_compra apontaria sempre para o mesmo valor. Mas devo alertar que tota a instânciação da classe encerrar_compra sempre terá o ultimo valor alterado por qualquer instância do objeto, por isso vc deve ter cuidado…
Obrigado pela ajuda… vou postar abaixo como o programa funciona. Ao clicar no botão ‘Registrar produto’, ele vai no banco, pega o nome e o preço, calcula o subtotal e envia para a classe encerrar_Compra:
Abaixo vai o códigoo do evento:
acesso_Banco banco = new acesso_Banco();
erro_SemCodigo erro = new erro_SemCodigo();
if (jTextField1.getText() == ""){
erro.setVisible(true);
}
// captura o código, faz a pesquisa no banco e exibe o nome do produto.
String codigo = jTextField1.getText();
jTextField2.setText(banco.getProduto(codigo));
// captura o preço a partir do código, converte para float e exibe o preço unitário do produto.
String preco = banco.getPreco(codigo);
float p = Float.parseFloat(preco);
jTextField3.setText(Float.toString(p));
// captura a quantidade de produtos para multiplicar pelo preço unitário e formar o preço total.
String quantidade = jTextField4.getText();
float qtd = Float.parseFloat(quantidade);
float novo_preco = p*qtd;
// exibe o preço total e calcula o sbutotal.
jTextField6.setText(Float.toString(novo_preco));
preco_anterior = subtotal;
subtotal = novo_preco + subtotal;
jTextField5.setText("R$: "+Float.toString(subtotal));
// exibe a quantidade de itens comprados;
itens++;
jLabel10.setText(Integer.toString(itens));
//faz a chamada e envia os parametros subtotal e itens para a nova classe
encerrar_Compra fechar_conta = new encerrar_Compra(subtotal, itens);
// fiz esse teste para ver se ele estava "setando os valores", e o teste funcionou.
float aux = fechar_conta.getTotal();
jLabel11.setText(Float.toString(aux));
Depois disso, quando clico no botão ‘Encerrar compra’, ele chama a outra janela e fecha a janela atual…