【Java】【事件驱动程序设计——贷款计算器】
运行结果:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
// 贷款类
class Loan {
private double interest;
private int year;
private double loanAmount;
private double monthlyPayment;
private double totalPayment;
public Loan(double interest, int year, double loanAmount) {
this.interest = interest;
this.year = year;
this.loanAmount = loanAmount;
monthlyPayment = loanAmount * interest / 12;
totalPayment = loanAmount * interest * year;
}
public double getMonthlyPayment() {
return monthlyPayment;
}
public double getTotalPayment() {
return totalPayment;
}
}
//
public class LoanCalculator extends JFrame {
private JTextField jtfAnnualIntestRate = new JTextField();
private JTextField jtfNumberOfYears = new JTextField();
private JTextField jtfLoanAmount = new JTextField();
private JTextField jtfMonthlyPayment = new JTextField();
private JTextField jtfTotalPayment = new JTextField();
private JButton jbtComputeLoan = new JButton("计算支付额");
public LoanCalculator() {
// 创建一个5行2列的面板p1
JPanel p1 = new JPanel(new GridLayout(5, 2));
// 将标签和文本域添加到p1中
p1.add(new JLabel("年利率"));
p1.add(jtfAnnualIntestRate);
p1.add(new JLabel("年份"));
p1.add(jtfNumberOfYears);
p1.add(new JLabel("贷款总额"));
p1.add(jtfLoanAmount);
p1.add(new JLabel("月支付额"));
p1.add(jtfMonthlyPayment);
p1.add(new JLabel("总支付额"));
p1.add(jtfTotalPayment);
p1.setBorder(new TitledBorder("输入年利率,年数及贷款额"));
// 创建一个面板p2
JPanel p2 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
// 将按钮添加到p2中
p2.add(jbtComputeLoan);
// 将p1放在框架的中央
add(p1, BorderLayout.CENTER);
// 将p2放在框架的南边
add(p2, BorderLayout.SOUTH);
// 创建并注册用以处理点击按钮动作事件的监听器
jbtComputeLoan.addActionListener(new ButtonListener());
}
private class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// 从文本域获取
double interest = Double.parseDouble(jtfAnnualIntestRate.getText());
int year = Integer.parseInt(jtfNumberOfYears.getText());
double loanAmount = Double.parseDouble(jtfLoanAmount.getText());
Loan loan = new Loan(interest, year, loanAmount);
// 输出计算结果到文本域
jtfMonthlyPayment.setText(String.format("%.2f", loan.getMonthlyPayment()));
jtfTotalPayment.setText(String.format("%.2f", loan.getTotalPayment()));
}
}
public static void main(String args[]) {
LoanCalculator frame = new LoanCalculator();
frame.pack();
frame.setTitle("贷款计算器");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 300);
frame.setVisible(true);
}
}
BY DXH924
2019.4.19