LoanJFrame

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SpinnerNumberModel;
import javax.swing.table.DefaultTableModel;

public class LoanJFrame extends JFrame implements ActionListener {
	private JTextField texts[];
	private JSpinner spin_year,spin_month;
	private JButton btn;
	private DefaultTableModel tablemodel;
	
	public LoanJFrame() {
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setBounds(300, 240, 780, 400);
		setBackground(Color.red);
		
		JPanel pnl = new JPanel();
		//pnl.setLayout(new FlowLayout(FlowLayout.LEFT));
		String[] jlabel_str = {"贷款金额","元      贷款利率","%/月      贷款年限","年       起始年月","年","月"};
		String[] jtextfield_str = {"100000","0.5025","5"};
		texts = new JTextField[jtextfield_str.length];
		int i =0;
		for (i = 0 ; i < jtextfield_str.length; i++) {
			pnl.add(new JLabel(jlabel_str[i]));
			texts[i] = new JTextField(jtextfield_str[i],5);
			pnl.add(texts[i]);
		}
		pnl.add(new JLabel(jlabel_str[i++]));
		Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		spin_year = new JSpinner();
		spin_year.setValue(year);
		pnl.add(spin_year);
		pnl.add(new JLabel(jlabel_str[i++]));
		
		int nextmonth = calendar.get(Calendar.MONTH) + 1;
		nextmonth = nextmonth%12 + 1;
		spin_month = new JSpinner(new SpinnerNumberModel(nextmonth, 1, 12, 1));
		pnl.add(spin_month);
		pnl.add(new JLabel(jlabel_str[i]));
		pnl.add(btn = new JButton("  计算      "));
		btn.addActionListener(this);
		getContentPane().add(pnl,"North");
		
		String[] titles = {"年月","本金余额(元)","月还本金(元)","月还利息(元)","月还本息(元)"};
		tablemodel = new DefaultTableModel(titles, 0);
		JTable jtable = new JTable(tablemodel);
		getContentPane().add(new JScrollPane(jtable));
		
		setVisible(true);
	}
	
	public static void main(String[] args) {
		new LoanJFrame();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		int loan_months = Integer.parseInt(texts[2].getText())*12;
		int start_year = Integer.parseInt(""+spin_year.getValue());
		int start_month = Integer.parseInt(""+spin_month.getValue());
		double leaving = Double.parseDouble(texts[0].getText());//本金余额
		double pay = leaving/loan_months;//月还本金
		double rate =  Double.parseDouble(texts[1].getText());//贷款利率
		tablemodel.setRowCount(loan_months);
		for (int i = 0; i < loan_months; i++) {
			tablemodel.setValueAt(start_year+"年"+start_month+"月", i, 0);
			tablemodel.setValueAt(String.format("%9.2f",leaving), i, 1);
			tablemodel.setValueAt(String.format("%9.2f",pay), i, 2);
			tablemodel.setValueAt(String.format("%9.2f",leaving*rate*0.01), i, 3);
			tablemodel.setValueAt(String.format("%9.2f",leaving*rate*0.01 + pay), i, 4);
			if(start_month==12){
				start_year++;
			}
			start_month = start_month%12+1;
			leaving -= pay;
		}
		
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值