import java.awt.*; import java.awt.event.*; import javax.swing.*; /** Programma om de constante periodieke afbetaling * te berekenen bij gegeven kapitaal en periodieke * rentevoet. * @author Lieven Smits * @version 1.0 24/7/2000 */ public class AnnuiteitSwing extends JFrame implements ActionListener { /** Rentevoet. Uitgedrukt in fracties van 0 tot 1, dus * 5 percent = 0.05 */ private JTextField txtRentevoet; /** Looptijd van de lening = aantal afbetalingen. */ private JTextField txtPerioden; /** Bedrag van het geleende kapitaal. */ private JTextField txtKapitaal; /** Periodiek te betalen bedrag. */ private JLabel lblAnnuiteit; /** Knop om de berekening te activeren. */ private JButton btnBereken; /** Construeer een venster met drie tekstvelden, * vier labels en een drukknop. */ public AnnuiteitSwing() { super("Constante annuïteiten"); Container c = getContentPane(); c.setLayout(new GridLayout(4, 2)); JLabel lblRentevoet = new JLabel("periodieke rentevoet"); c.add(lblRentevoet); txtRentevoet = new JTextField(); c.add(txtRentevoet); JLabel lblPerioden = new JLabel("aantal perioden"); c.add(lblPerioden); txtPerioden = new JTextField(); c.add(txtPerioden); JLabel lblKapitaal = new JLabel("ontleend kapitaal"); c.add(lblKapitaal); txtKapitaal = new JTextField(); c.add(txtKapitaal); btnBereken = new JButton("Bereken afbetaling"); c.add(btnBereken); lblAnnuiteit = new JLabel(); lblAnnuiteit.setHorizontalAlignment(SwingConstants.RIGHT); c.add(lblAnnuiteit); btnBereken.addActionListener(this); setSize(300, 120); show(); } /** Lees de drie invoervelden, bereken de afbetaling * en toon ze in het daartoe bestemde label-veld. */ public void actionPerformed(ActionEvent evt) { // Interpreteer de tekstvelden als getallen; dit kan // een NumberFormatException opleveren! double dRentevoet = Double.parseDouble(txtRentevoet.getText()); int iPerioden = Integer.parseInt(txtPerioden.getText()); double dKapitaal = Double.parseDouble(txtKapitaal.getText()); // tussenresultaat: v = (1 + rentevoet)^perioden double v = 1.0; for (int k = 1; k <= iPerioden; k++) v *= 1 + dRentevoet; double dAnnuiteit = dKapitaal * dRentevoet * v / (v - 1); lblAnnuiteit.setText(String.valueOf(dAnnuiteit)); } /** Toon een venster waarin periodieke afbetalingen * berekend kunnen worden. */ public static void main(String[] argv) { AnnuiteitSwing hetVenster = new AnnuiteitSwing(); } }