复利计算4.0

Posted 01蓝叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复利计算4.0相关的知识,希望对你有一定的参考价值。

package fuli_4;
import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.LineBorder;

import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;

//VS4E -- DO NOT REMOVE THIS LINE!
public class fuli_4 extends JFrame {

    private static final long serialVersionUID = 1L;
    private JLabel jLabel0;
    private JLabel jLabel1;
    private JPanel jPanel1;
    private JPanel jPanel0;
    private JLabel jLabel2;
    private JButton jButton4;
    private JLabel jLabel3;
    private JTextField jTextField0;
    private JTextField jTextField1;
    private JTextField jTextField2;
    private JTextField jTextField3;
    private static final MouseEvent event2 = null;
    private JComboBox jComboBox0;
    private JComboBox jComboBox1;
    private JButton jButton1;
    private JLabel jLabel4;
    private JLabel jLabel6;
    private JTextField jTextField4;
    private JLabel jLabel5;
    private JLabel jLabel7;
    private JLabel jLabel8;
    private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel";
    public fuli_4() {
        initComponents();
    }

    private void initComponents() {
        setLayout(new GroupLayout());
        add(getJPanel0(), new Constraints(new Leading(9, 304, 10, 10), new Leading(80, 361, 10, 10)));
        add(getJComboBox1(), new Constraints(new Leading(23, 10, 10), new Leading(19, 10, 10)));
        setSize(320, 449);
    }

    private JLabel getJLabel8() {
        if (jLabel8 == null) {
            jLabel8 = new JLabel();
            jLabel8.setText(null);
            //设置字体大小,1是粗体,0是正常
            jLabel8.setFont(new   java.awt.Font("Dialog",   0,   11));   
            //设置字体颜色
            jLabel8.setForeground(Color.red);
        }    
        return jLabel8;
    }

    private JLabel getJLabel7() {
        if (jLabel7 == null) {
            jLabel7 = new JLabel();
            jLabel7.setText(null);    
            jLabel7.setFont(new   java.awt.Font("Dialog",   0,   11));   
            jLabel7.setForeground(Color.red);
        }
        return jLabel7;
    }

    private JLabel getJLabel5() {
        if (jLabel5 == null) {
            jLabel5 = new JLabel();
            jLabel5.setText(null);
            jLabel5.setFont(new   java.awt.Font("Dialog",   0,   11));   
            jLabel5.setForeground(Color.red);
        }
        return jLabel5;
    }

    private JLabel getJLabel6() {
        if (jLabel6 == null) {
            jLabel6 = new JLabel();
            jLabel6.setText(null);
        }
        return jLabel6;
    }

    private JLabel getJLabel4() {
        if (jLabel4 == null) {
            jLabel4 = new JLabel();
            jLabel4.setText("%");
        }
        return jLabel4;
    }

    private JButton getJButton1() {
        if (jButton1 == null) {
            jButton1 = new JButton();
            jButton1.setText("确定");
            jButton1.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent event) {
                    jButton1MouseMouseClicked(event);
                }
            });
        }
        return jButton1;
    }

    private JComboBox getJComboBox1() {
        if (jComboBox1 == null) {
            jComboBox1 = new JComboBox();
            jComboBox1.setModel(new DefaultComboBoxModel(new Object[] { "复利计算", "单利计算" }));
            jComboBox1.setDoubleBuffered(false);
            jComboBox1.setBorder(null);
            jComboBox1.addMouseListener(new MouseAdapter() {
            });
        }
        return jComboBox1;
    }

    private JComboBox getJComboBox0() {
        if (jComboBox0 == null) {
            jComboBox0 = new JComboBox();
            jComboBox0.setModel(new DefaultComboBoxModel(new Object[] { "终值计算", "本金计算" ,"年限计算","利率计算","基金定投","等额本息还款"}));
            jComboBox0.setDoubleBuffered(false);
            jComboBox0.setBorder(null);
            jComboBox0.addMouseListener(new MouseAdapter() {
        });
        }
        return jComboBox0;
    }

    private JTextField getJTextField3() {
        if (jTextField3 == null) {
            jTextField3 = new JTextField(10);
        }
        return jTextField3;
    }

    private JTextField getJTextField2() {
        if (jTextField2 == null) {
            jTextField2 = new JTextField();
            jTextField2.addKeyListener(new  KeyAdapter(){
                public void keyTyped(KeyEvent e) {
                    jLabel7.setText(null);
                    int keyChar = e.getKeyChar();
                    if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9||keyChar == ‘.‘) {

                    } else {
                        e.consume(); // 关键,屏蔽掉非法输入
                        jLabel7.setText("输入有误,请输入数字");
                    }
                }
            });
        }
        return jTextField2;
    }

    private JTextField getJTextField1() {
        if (jTextField1 == null) {
            jTextField1 = new JTextField(10);
           // 限制只能输入数字
            jTextField1.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
                    jLabel8.setText(null);
                    int keyChar = e.getKeyChar();
                    if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9||keyChar == ‘.‘) {

                    } else {
                        e.consume(); // 关键,屏蔽掉非法输入
                        jLabel8.setText("输入有误,请输入数字");
                    }
                }
            });    
        }
        return jTextField1;
    }

    private JTextField getJTextField0() {
        if (jTextField0 == null) {
            jTextField0 = new JTextField(10);
            // 限制只能输入数字
            jTextField0.addKeyListener(new KeyAdapter() {
                public void keyTyped(KeyEvent e) {
                    jLabel5.setText(null);
                    int keyChar = e.getKeyChar();
                    if (keyChar >= KeyEvent.VK_0 && keyChar <= KeyEvent.VK_9||keyChar == ‘.‘) {

                    } else {
                        e.consume(); // 关键,屏蔽掉非法输入
                        jLabel5.setText("输入有误,请输入数字");
                    }
                }
            });    
        }
        return jTextField0;
    }

    private JLabel getJLabel3() {
        if (jLabel3 == null) {
            jLabel3 = new JLabel();
            jLabel3.setText("终值");
        }
        return jLabel3;
    }

    private JButton getJButton4() {
        if (jButton4 == null) {
            jButton4 = new JButton();
            jButton4.setText("确定");
            jButton4.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent event) {
                    jButton4MouseMouseClicked(event);
                }
            });
        }
        return jButton4;
    }

    private JLabel getJLabel2() {
        if (jLabel2 == null) {
            jLabel2 = new JLabel();
            jLabel2.setText("年利率");
        }
        return jLabel2;
    }
    
    private JPanel getJPanel0() {
        if (jPanel0 == null) {
            jPanel0 = new JPanel();
            jPanel0.setBorder(new LineBorder(Color.red, 1, false));
            jPanel0.setLayout(new GroupLayout());
            jPanel0.add(getJComboBox0(), new Constraints(new Leading(14, 10, 10), new Leading(20, 10, 10)));
            jPanel0.add(getJButton1(), new Constraints(new Leading(119, 10, 10), new Leading(19, 12, 12)));
            jPanel0.add(getJPanel1(), new Constraints(new Leading(22, 261, 10, 10), new Leading(74, 264, 10, 10)));
        }
        return jPanel0;
    }

    private JPanel getJPanel1() {
        if (jPanel1 == null) {
            jPanel1 = new JPanel();
            jPanel1.setBorder(new LineBorder(Color.black, 1, false));
            jPanel1.setLayout(new GroupLayout());
            jPanel1.add(getJLabel0(), new Constraints(new Leading(14, 10, 10), new Leading(26, 10, 10)));
            jPanel1.add(getJLabel1(), new Constraints(new Leading(14, 12, 12), new Leading(113, 10, 10)));
            jPanel1.add(getJLabel3(), new Constraints(new Leading(14, 12, 12), new Leading(215, 10, 10)));
            jPanel1.add(getJLabel6(), new Constraints(new Leading(56, 12, 12), new Leading(215, 12, 12)));
            jPanel1.add(getJTextField0(), new Constraints(new Leading(86, 168, 10, 10), new Leading(26, 12, 12)));
            jPanel1.add(getJTextField2(), new Constraints(new Leading(86, 168, 12, 12), new Leading(68, 12, 12)));
            jPanel1.add(getJTextField1(), new Constraints(new Leading(86, 168, 12, 12), new Leading(111, 12, 12)));
            jPanel1.add(getJTextField3(), new Constraints(new Leading(90, 164, 12, 12), new Leading(215, 12, 12)));
            jPanel1.add(getJLabel4(), new Constraints(new Leading(64, 26, 10, 10), new Leading(70, 12, 12)));
            jPanel1.add(getJButton4(), new Constraints(new Leading(140, 12, 12), new Leading(162, 10, 10)));
            jPanel1.add(getJLabel5(), new Constraints(new Leading(86, 168, 12, 12), new Leading(48, 10, 10)));
            jPanel1.add(getJLabel7(), new Constraints(new Leading(86, 168, 12, 12), new Leading(92, 10, 10)));
            jPanel1.add(getJLabel8(), new Constraints(new Leading(86, 168, 12, 12), new Leading(137, 12, 12)));
            jPanel1.add(getJLabel2(), new Constraints(new Leading(11, 12, 12), new Leading(70, 12, 12)));
        }
        return jPanel1;
    }

    private JLabel getJLabel1() {
        if (jLabel1 == null) {
            jLabel1 = new JLabel();
            jLabel1.setText("年限");
        }
        return jLabel1;
    }

    private JLabel getJLabel0() {
        if (jLabel0 == null) {
            jLabel0 = new JLabel();
            jLabel0.setText("本金");
        }
        return jLabel0;
    }

    private static void installLnF() {
        try {
            String lnfClassname = PREFERRED_LOOK_AND_FEEL;
            if (lnfClassname == null)
                lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName();
            UIManager.setLookAndFeel(lnfClassname);
        } catch (Exception e) {
            System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL + " on this platform:" + e.getMessage());
        }
    }

    /**
    * Main entry of the class.
    * Note: This class is only created so that you can easily preview the result at runtime.
    * It is not expected to be managed by the designer.
    * You can modify it as you like.
    */
    public static void main(String[] args) {
        installLnF();
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                fuli_4 frame = new fuli_4();
                frame.setDefaultCloseOperation(fuli_4.EXIT_ON_CLOSE);
                frame.setTitle("复利、单利计算 ");
                frame.getContentPane().setPreferredSize(frame.getSize());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
    
    //终值,本金
    private void jButton1MouseMouseClicked(MouseEvent event) {
        if (jComboBox0.getSelectedItem() == "终值计算") {  
            jLabel6.setText(null);
            jLabel4.setText("%");
            this.jLabel0.setText("本金");
            this.jLabel2.setText("年利率");
            this.jLabel3.setText("终值");
            this.jLabel1.setText("年限");
        }
        else if (jComboBox0.getSelectedItem() == "本金计算") {
            jLabel6.setText(null);
            jLabel4.setText("%");
            this.jLabel0.setText("终值");
            this.jLabel3.setText("本金"); 
            this.jLabel2.setText("年利率");
            this.jLabel1.setText("年限");
        } 
        else if (jComboBox0.getSelectedItem() == "年限计算") {
            jLabel6.setText(null);
            jLabel4.setText("%");
            this.jLabel0.setText("本金");
            this.jLabel1.setText("终值");
            this.jLabel2.setText("年利率");
            this.jLabel3.setText("年限");
        } 
        else if (jComboBox0.getSelectedItem() == "利率计算") {
            jLabel4.setText(null);
            jLabel6.setText("%");
            this.jLabel0.setText("本金");
            this.jLabel3.setText("年利率");
            this.jLabel2.setText("终值");
            this.jLabel1.setText("年限");
        } 
        else if (jComboBox0.getSelectedItem() == "基金定投") {
            jLabel6.setText(null);
            jLabel4.setText("%");
            this.jLabel0.setText("每期定投");
            this.jLabel2.setText(" 收益率");
            this.jLabel3.setText("预期收益");
            this.jLabel1.setText("定投期数(年)");
        }
        else if (jComboBox0.getSelectedItem() == "等额本息还款") {
            jLabel6.setText(null);
            jLabel4.setText("%");
            this.jLabel0.setText("贷款");
            this.jLabel2.setText("年利率");
            this.jLabel3.setText("每月还款");
            this.jLabel1.setText("期限(月)");
        }
    }
    
    
    private void jButton4MouseMouseClicked(MouseEvent event) {
        NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); // 字符串转化为数字
        float p = Float.parseFloat(jTextField0.getText());
        float r = Float.parseFloat(jTextField2.getText());
        float n = Float.parseFloat(jTextField1.getText());
        double f=0;
        if (jComboBox1.getSelectedItem() == "复利计算") {
             
            if (jComboBox0.getSelectedItem() == "终值计算") {
                f = p * Math.pow((1 + 0.01*r),n);
            } 
            else if (jComboBox0.getSelectedItem() == "本金计算") {
                f = p/Math.pow((1+0.01*r), n);
            } 
            else if (jComboBox0.getSelectedItem() == "年限计算") {
                f = (Math.log(n/p))/(Math.log(1+0.01*r));
            }
            else if (jComboBox0.getSelectedItem() == "利率计算") {
                f = 100*( Math.pow(r/p,1d/n)-1);
            }
            else if (jComboBox0.getSelectedItem() == "基金定投") {
                f = p*(1+0.01*r)*(-1+Math.pow(1+0.01*r,n))/(0.01*r);
            } 
            else if (jComboBox0.getSelectedItem() == "等额本息还款") {
                f=p*((0.01*r/12)*Math.pow((1+0.01*r/12),n))/(Math.pow((1+0.01*r/12),n)-1);
            }
        }
        else {
            if (jComboBox0.getSelectedItem() == "终值计算") {
                f = p*(1+0.01*r*n);
            }
            else if (jComboBox0.getSelectedItem() == "本金计算") {
                f = p/(1+0.01*r*n);
            } 
            else if (jComboBox0.getSelectedItem() == "年限计算") {
                f = ((n/p)-1)/(0.01*r);
            }
            else if (jComboBox0.getSelectedItem() == "利率计算") {
                f = 100*(((r/p)-1)/n);
            }
        }
        DecimalFormat df = new DecimalFormat("0.00"); 
        String db = df.format(f);
        jTextField3.setText(String.valueOf(db));
    }
}

技术分享技术分享技术分享

以上是关于复利计算4.0的主要内容,如果未能解决你的问题,请参考以下文章

0319 复利计算器4.0

复利计算4.0

复利计算4.0

复利计算4.0

复利计算4.0

0330复利计算4.0单元测试