此版本复利计算器 基本实现了所要求的全部功能,并对输入的数据进行出错处理了,而且对代码进行了整合与复用
package
JSQ import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.Font; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.Color; import javax.swing.JComboBox; import javax.swing.DefaultComboBoxModel; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JRadioButton; public class FuLiJiSuanQi extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField t2; private JTextField t3; private JTextField t1; private JTextField t4; private JLabel L3; double capital,year,rate,sum; double t_1,t_2,t_3; int flag=1; private JRadioButton r1; private JRadioButton r2; KeyAdapter keyAdapter=new KeyAdapter(){ public void keyTyped(KeyEvent e) { int keyChar =e.getKeyChar(); if((keyChar>=KeyEvent.VK_0 &&keyChar<=KeyEvent.VK_9)||keyChar==KeyEvent.VK_PERIOD){ } else e.consume(); } }; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { FuLiJiSuanQi frame = new FuLiJiSuanQi(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ @SuppressWarnings({ "unchecked", "rawtypes" }) public FuLiJiSuanQi() { setTitle("u590Du5229u8BA1u7B97u56683.1"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 474, 369); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); final JLabel L1 = new JLabel("u5B58u6B3E(u4E07):"); L1.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16)); L1.setBounds(62, 121, 90, 15); contentPane.add(L1); t1 = new JTextField(); t1.setBounds(166, 115, 173, 21); contentPane.add(t1); t1.setColumns(10); t1.addKeyListener(keyAdapter); L3 = new JLabel("u5229u7387( %):"); L3.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16)); L3.setBounds(62, 186, 81, 15); contentPane.add(L3); t2 = new JTextField(); t2.setBounds(166, 149, 173, 21); contentPane.add(t2); t2.setColumns(10); t2.addKeyListener(keyAdapter); final JLabel L2 = new JLabel("u672Cu606F(u4E07):"); L2.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16)); L2.setBounds(62, 155, 104, 15); contentPane.add(L2); t3 = new JTextField(); t3.setBounds(166, 180, 173, 21); contentPane.add(t3); t3.setColumns(10); t3.addKeyListener(keyAdapter); final JButton btnNewButton = new JButton("u5E74u9650(u5E74)"); t4 = new JTextField(); t4.setEnabled(false); t4.setForeground(new Color(127, 255, 212)); t4.setBounds(166, 237, 173, 21); contentPane.add(t4); t4.setColumns(10); final JComboBox comboBox = new JComboBox(); comboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { if(comboBox.getSelectedItem().toString().equals("u4F30u7B97u5B58u671F")) { flag=1; r1.setEnabled(true); L1.setText("u5B58u6B3E(u4E07):"); L2.setText("u672Cu606F(u4E07):"); L3.setText("u5229u7387(%):"); btnNewButton.setText("u5E74u9650(u5E74)"); emptyJTextField(); } else if(comboBox.getSelectedItem().toString().equals("u4F30u7B97u5B58u989D")) { flag=2; r1.setEnabled(true); L1.setText("u672Cu606F(u4E07)"); L2.setText("u5E74u9650(u5E74):"); L3.setText("u5229u7387(%):"); btnNewButton.setText("u5B58u6B3E(u4E07)"); emptyJTextField(); } else if(comboBox.getSelectedItem().toString().equals("u4F30u7B97u5229u7387")) { flag=3; r1.setEnabled(true); L1.setText("u5B58u6B3E(u4E07):"); L2.setText("u672Cu606F(u4E07):"); L3.setText("u5E74u9650(u5E74):"); btnNewButton.setText("u5229u7387(%)"); emptyJTextField(); } else if(comboBox.getSelectedItem().toString().equals("u4F30u7B97u672Cu606F")){ flag=4; r1.setEnabled(true); L1.setText("u5B58u6B3E(u4E07):"); L2.setText("u5E74u9650(u5E74):"); L3.setText("u5229u7387(%):"); btnNewButton.setText("u672Cu606F(u4E07)"); emptyJTextField(); } else { flag=5; r1.setEnabled(false); r2.setSelected(isActive()); L1.setText("u8D37u6B3E(u4E07)"); L2.setText("u5E74u9650(u5E74):"); L3.setText("u5229u7387(%):"); btnNewButton.setText("u7B49u989Du6708u8FD8u6B3E(u4E07)"); emptyJTextField(); } } }); comboBox.setModel(new DefaultComboBoxModel(new String[] {"u4F30u7B97u5B58u671F", "u4F30u7B97u5B58u989D", "u4F30u7B97u5229u7387","u4F30u7B97u672Cu606F", "u5206u671Fu8FD8u6B3E"})); comboBox.setBounds(53, 10, 113, 21); contentPane.add(comboBox); r1 = new JRadioButton("u5355u5229"); r1.setSelected(true); r1.setBounds(53, 60, 59, 23); contentPane.add(r1); r2 = new JRadioButton("u590Du5229"); r2.setBounds(114, 60, 71, 23); contentPane.add(r2); ButtonGroup group=new ButtonGroup(); group.add(r1); group.add(r2); JLabel L = new JLabel("u529Fu80FD"); L.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16)); L.setBounds(10, 13, 54, 15); contentPane.add(L); btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (t1.getText().trim().equals("")||t2.getText().trim().equals("") ||t3.getText().trim().equals("")) { JOptionPane.showMessageDialog(contentPane, "u8BF7u628Au6570u636Eu8F93u5165u5B8Cu6574"); } else { getJTextFieldValue(); if(r1.isSelected()){ calculate(); } else { calculate_2(); } } } }); btnNewButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); btnNewButton.setBounds(39, 236, 127, 23); contentPane.add(btnNewButton); JLabel label = new JLabel("u65B9u5F0F"); label.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16)); label.setBounds(10, 62, 54, 15); contentPane.add(label); } public void getJTextFieldValue() { t_1=Double.parseDouble(t1.getText()); t_2=Double.parseDouble(t2.getText()); t_3=Double.parseDouble(t3.getText()); }; public void emptyJTextField() { t1.setText(null); t2.setText(null); t3.setText(null); t4.setText(null); } public void calculate() { switch (flag) { case 1: capital=t_1; sum=t_2; rate=t_3; year=(sum/capital-1)/(rate/100); t4.setText(Double.toString(year)); break; case 2: sum=t_1; year=t_2; rate=t_3; capital=sum/(year*rate/100+1); t4.setText(Double.toString(capital)); break; case 3: capital=t_1; sum=t_2; year=t_3; rate=(sum/capital-1)/year*100; t4.setText(Double.toString(rate)); break; case 4: capital=t_1; year=t_2; rate=t_3; sum=capital*(1+rate/100*year); t4.setText(Double.toString(sum)); break; default: break; } } public void calculate_2() { switch (flag) { case 1: capital=t_1; sum=t_2; rate=t_3; year=Math.log(sum/capital)/Math.log(1+rate/100); t4.setText(Double.toString(year)); break; case 2: sum=t_1; year=t_2; rate=t_3; capital=sum/Math.pow((1+rate/100),year); t4.setText(Double.toString(capital)); break; case 3: capital=t_1; sum=t_2; year=t_3; rate=(Math.pow((sum/capital),1/year)-1)*100; t4.setText(Double.toString(rate)); break; case 4: capital=t_1; year=t_2; rate=t_3; sum=capital*Math.pow((1+rate/100),year); t4.setText(Double.toString(sum)); break; case 5: capital=t_1; year=t_2; rate=t_3; sum=capital*Math.pow((1+rate/1200),year*12)*(rate/1200) /(Math.pow((1+rate/1200),year*12)-1); t4.setText(Double.toString(sum)); break; default: break; } } }
复利计算器3.1-冯金伟博客园