1 import javafx.application.Application;
2 import javafx.geometry.Pos;
3 import javafx.geometry.HPos;
4 import javafx.scene.Scene;
5 import javafx.scene.control.Button;
6 import javafx.scene.control.Label;
7 import javafx.scene.control.TextField;
8 import javafx.scene.layout.GridPane;
9 import javafx.stage.Stage;
10
11 public class LoanCalculator extends Application {
12 private TextField tfAnnualInterestRate = new TextField();
13 private TextField tfNumberOfYears = new TextField();
14 private TextField tfLoanAmount = new TextField();
15 private TextField tfMonthlyPayment = new TextField();
16 private TextField tfTotalPayment = new TextField();
17 private Button btCalculate = new Button("Calculate");
18
19 @Override
20 public void start(Stage primaryStage) {
21
22 GridPane gridPane = new GridPane();
23 gridPane.setHgap(5);
24 gridPane.setVgap(5);
25 gridPane.add(new Label("Annual Interest Rate:"), 0, 0);
26 gridPane.add(tfAnnualInterestRate, 1, 0);
27 gridPane.add(new Label("Number of Years:"), 0, 1);
28 gridPane.add(tfNumberOfYears, 1, 1);
29 gridPane.add(new Label("Loan Amount:"), 0, 2);
30 gridPane.add(tfLoanAmount, 1, 2);
31 gridPane.add(new Label("Monthly Payment:"), 0, 3);
32 gridPane.add(tfMonthlyPayment, 1, 3);
33 gridPane.add(new Label("Total Payment:"), 0, 4);
34 gridPane.add(tfTotalPayment, 1, 4);
35 gridPane.add(btCalculate, 1, 5);
36
37
38 gridPane.setAlignment(Pos.CENTER);
39 tfAnnualInterestRate.setAlignment(Pos.BOTTOM_RIGHT);
40 tfNumberOfYears.setAlignment(Pos.BOTTOM_RIGHT);
41 tfLoanAmount.setAlignment(Pos.BOTTOM_RIGHT);
42 tfMonthlyPayment.setAlignment(Pos.BOTTOM_RIGHT);
43 tfTotalPayment.setAlignment(Pos.BOTTOM_RIGHT);
44 tfMonthlyPayment.setEditable(false);
45 tfTotalPayment.setEditable(false);
46 GridPane.setHalignment(btCalculate, HPos.RIGHT);
47
48
49 btCalculate.setOnAction(e -> calculateLoanPayment());
50
51
52 Scene scene = new Scene(gridPane, 400, 250);
53 primaryStage.setTitle("LoanCalculator");
54 primaryStage.setScene(scene);
55 primaryStage.show();
56 }
57
58 private void calculateLoanPayment() {
59
60 double interest =
61 Double.parseDouble(tfAnnualInterestRate.getText());
62 int year = Integer.parseInt(tfNumberOfYears.getText());
63 double loanAmount =
64 Double.parseDouble(tfLoanAmount.getText());
65
66
67 Loan loan = new Loan(interest, year, loanAmount);
68
69
70 tfMonthlyPayment.setText(String.format("$%.2f",
71 loan.getMonthlyPayment()));
72 tfTotalPayment.setText(String.format("$%.2f",
73 loan.getTotalPayment()));
74 }
75
76
80 public static void main(String[] args) {
81 launch(args);
82 }
83 }