【Java】【事件驱动程序设计——贷款计算器】

运行结果:

 

【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