Qual é a melhor solução para exibir a tabela com os dados, dependendo do calculo feito pelos valores dados pelo usuário, quando o botão é clicado?
Quando eu executo o programa, ele terá uma tabela vazia, ai dependendo do calculo, como posso fazer pra listar todos os valores dos juros compostos?
import java.awt.*;
import java.awt.event.*;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class CalculadoraDeJuros extends JFrame implements ActionListener{
private JLabel lValor, lTaxa, lAnos;
private JTextField tValor, tTaxa, tAnos;
private JButton calcular;
private JPanel painelFundo;
private JTable tabela;
private JScrollPane barraRolagem;
String [] colunas = {"Ano", "Valor", "Taxa"};
Object [][] dados = {};
public CalculadoraDeJuros() {
super ("Calculadora de juros compostos");
}
public void criarJanela(){
//atributos para entrada de valores
lValor = new JLabel("Valor");
lTaxa = new JLabel("Taxa anual");
lAnos = new JLabel("Anos de aplicação");
tValor = new JTextField(20);
tTaxa = new JTextField(20);
tAnos = new JTextField(20);
calcular = new JButton("Calcular");
//painel para entrada de dados
JPanel entradaDeDadosPanel = new JPanel(new GridLayout(2,4));
//painel para saida de dados
JPanel saidaDeDadosPanel = new JPanel(new GridLayout(1,1));
//botao calcular
JPanel botoesAcao = new JPanel(new GridLayout(1,1));
entradaDeDadosPanel.add(lValor);
entradaDeDadosPanel.add(lTaxa);
entradaDeDadosPanel.add(lAnos);
entradaDeDadosPanel.add(tValor);
entradaDeDadosPanel.add(tTaxa);
entradaDeDadosPanel.add(tAnos);
botoesAcao.add(calcular);
painelFundo = new JPanel();
painelFundo.setLayout(new GridLayout(1,2));
tabela = new JTable(dados, colunas);
barraRolagem = new JScrollPane(tabela);
painelFundo.add(barraRolagem);
//adicionando o painel de entrada e saida de dados
Container container = getContentPane();
container.setLayout(new BorderLayout());
container.add(entradaDeDadosPanel, BorderLayout.NORTH);
container.add(botoesAcao, BorderLayout.CENTER);
container.add(painelFundo, BorderLayout.SOUTH);
//adicionando action listener
calcular.addActionListener(this);
//configurações basicas de tela
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(600,600);
setVisible(true);
setLocationRelativeTo(null);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == calcular){
double valor = Double.parseDouble(tValor.getText());
double taxa = Double.parseDouble(tTaxa.getText());
int anos = Integer.parseInt(tAnos.getText());
//instanciando o vetor e calculando os valores
double valorAnual[] = new double[anos + 1];
//valor inicial para o array
valorAnual[0] = valor;
//saída de dados
String msg = String.format("Valor inicial: %.2f | Taxa ao ano: %.1f%% | Anos de aplicação: %d",
valor, taxa, anos);
System.out.println(msg);
//convertendo a taxa de porcentagem para fração
taxa = (taxa / 100) + 1; //1 para aumento (pegar 100% do valor e adicionar a taxa dada)
//PG
for(int i = 1; i <= anos; i++){
valorAnual[i] = valorAnual[i - 1] * taxa;
System.out.format("Valor no %dº ano: %.2f\n", i, valorAnual[i]);
}
}
}
public static void main(String [] args){
CalculadoraDeJuros cdj = new CalculadoraDeJuros();
cdj.criarJanela();
}
}