这是复利计算器3.0版本,新加了一些功能,实现了基本的单复利计算,但还未对输入出错进行处理,下一个版本将更加完好
 1 package JSQ;
  2 
  3 import java.awt.EventQueue;
  4 
  5 import javax.swing.JFrame;
  6 import javax.swing.JPanel;
  7 import javax.swing.border.EmptyBorder;
  8 import javax.swing.ButtonGroup;
  9 import javax.swing.JLabel;
 10 import javax.swing.JTextField;
 11 import javax.swing.JButton;
 12 import java.awt.event.ActionListener;
 13 import java.awt.event.ActionEvent;
 14 import java.awt.Font;
 15 import java.awt.event.MouseAdapter;
 16 import java.awt.event.MouseEvent;
 17 import java.awt.Color;
 18 import javax.swing.JComboBox;
 19 import javax.swing.DefaultComboBoxModel;
 20 import java.awt.event.ItemListener;
 21 import java.awt.event.ItemEvent;
 22 import javax.swing.JRadioButton;
 23 
 24 public class FuLiJiSuanQi extends JFrame {
 25 
 26     /**
 27      * 
 28      */
 29     private static final long serialVersionUID = 1L;
 30     private JPanel contentPane;
 31     private JTextField t2;
 32     private JTextField t3;
 33     private JTextField t1;
 34     private JTextField t4;
 35     private JLabel L3;
 36     double capital,year,rate,sum;
 37     int flag=1;
 38     private JRadioButton r1;
 39     private JRadioButton r2;
 40     /**
 41      * Launch the application.
 42      */
 43     public static void main(String[] args) {
 44         EventQueue.invokeLater(new Runnable() {
 45             @Override
 46             public void run() {
 47                 try {
 48                     FuLiJiSuanQi frame = new FuLiJiSuanQi();
 49                     frame.setVisible(true);
 50                 } catch (Exception e) {
 51                     e.printStackTrace();
 52                 }
 53             }
 54         });
 55     }
 56 
 57     /**
 58      * Create the frame.
 59      */
 60     public FuLiJiSuanQi() {
 61         setTitle("\u590D\u5229\u8BA1\u7B97\u56683.0");
 62         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 63         setBounds(100, 100, 474, 369);
 64         contentPane = new JPanel();
 65         contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
 66         setContentPane(contentPane);
 67         contentPane.setLayout(null);
 68         
 69         final JLabel L1 = new JLabel("\u5B58\u6B3E(\u4E07):");//存款
 70         L1.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16));
 71         L1.setBounds(62, 85, 90, 15);
 72         contentPane.add(L1);
 73         
 74         t1 = new JTextField();
 75         t1.setBounds(166, 84, 173, 21);
 76         contentPane.add(t1);
 77         t1.setColumns(10);
 78         
 79         L3 = new JLabel("\u5229\u7387( %):");//利率
 80         L3.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16));
 81         L3.setBounds(62, 142, 81, 15);
 82         contentPane.add(L3);
 83         
 84         t2 = new JTextField();
 85         t2.setBounds(166, 115, 173, 21);
 86         contentPane.add(t2);
 87         t2.setColumns(10);
 88         
 89         final JLabel L2 = new JLabel("\u672C\u606F(\u4E07):");//年限
 90         L2.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16));
 91         L2.setBounds(62, 117, 104, 15);
 92         contentPane.add(L2);
 93         
 94         t3 = new JTextField();
 95         t3.setBounds(166, 140, 173, 21);
 96         contentPane.add(t3);
 97         t3.setColumns(10);
 98         final JButton btnNewButton = new JButton("\u5E74\u9650(\u5E74)");//本息
 99         t4 = new JTextField();
100         t4.setEnabled(false);
101         t4.setForeground(new Color(127, 255, 212));
102         t4.setBounds(166, 182, 173, 21);
103         contentPane.add(t4);
104         t4.setColumns(10);
105         
106         final JComboBox comboBox = new JComboBox();
107         comboBox.addItemListener(new ItemListener() {
108             @Override
109             public void itemStateChanged(ItemEvent e) {
110                 if(comboBox.getSelectedItem().toString().equals("\u4F30\u7B97\u5B58\u671F"))
111                 {
112                     flag=1;
113                     L1.setText("\u5B58\u6B3E(\u4E07):");
114                     L2.setText("\u672C\u606F(\u4E07):");
115                     L3.setText("\u5229\u7387(%):");
116                     btnNewButton.setText("\u5E74\u9650(\u5E74)");
117                     t1.setText(null);
118                     t2.setText(null);
119                     t3.setText(null);
120                 }
121                 else if(comboBox.getSelectedItem().toString().equals("\u4F30\u7B97\u5B58\u989D")) {
122                     flag=2;
123                     L1.setText("\u672C\u606F(\u4E07)");
124                     L2.setText("\u5E74\u9650(\u5E74):");
125                     L3.setText("\u5229\u7387(%):");
126                     btnNewButton.setText("\u5B58\u6B3E(\u4E07)");
127                     t1.setText(null);
128                     t2.setText(null);
129                     t3.setText(null);
130                 }
131                 else if(comboBox.getSelectedItem().toString().equals("\u4F30\u7B97\u5229\u7387")) {
132                     flag=3;
133                     L1.setText("\u5B58\u6B3E(\u4E07):");
134                     L2.setText("\u672C\u606F(\u4E07):");
135                     L3.setText("\u5E74\u9650(\u5E74):");
136                     btnNewButton.setText("\u5229\u7387(%)");
137                     t1.setText(null);
138                     t2.setText(null);
139                     t3.setText(null);
140                 }
141                 else {
142                     flag=4;
143                     L1.setText("\u5B58\u6B3E(\u4E07):");
144                     L2.setText("\u5E74\u9650(\u5E74):");
145                     L3.setText("\u5229\u7387(%):");
146                     btnNewButton.setText("\u672C\u606F(\u4E07)");
147                     t1.setText(null);
148                     t2.setText(null);
149                     t3.setText(null);
150                 }
151             }
152         });
153         comboBox.setModel(new DefaultComboBoxModel(new String[] {"\u4F30\u7B97\u5B58\u671F", "\u4F30\u7B97\u5B58\u989D", "\u4F30\u7B97\u5229\u7387", "\u4F30\u7B97\u672C\u606F"}));
154         comboBox.setBounds(53, 10, 90, 21);
155         contentPane.add(comboBox);
156         
157         r1 = new JRadioButton("\u5355\u5229");
158         r1.setSelected(true);
159         r1.setBounds(6, 37, 64, 23);
160         contentPane.add(r1);
161         
162         r2 = new JRadioButton("\u590D\u5229");
163         r2.setBounds(72, 37, 70, 23);
164         contentPane.add(r2);
165         ButtonGroup group=new ButtonGroup();
166         group.add(r1);
167         group.add(r2);
168         JLabel L = new JLabel("\u529F\u80FD");
169         L.setFont(new Font("Microsoft JhengHei", Font.PLAIN, 16));
170         L.setBounds(10, 13, 54, 15);
171         contentPane.add(L);
172         btnNewButton.addMouseListener(new MouseAdapter() {
173             @Override
174             public void mouseClicked(MouseEvent e) {
175                 if(r1.isSelected()){
176                     switch (flag) {
177                     case 1:
178                         capital=Double.parseDouble(t1.getText());
179                         sum=Double.parseDouble(t2.getText());
180                         rate=Double.parseDouble(t3.getText());
181                         year=(sum/capital-1)/(rate/100);
182                         t4.setText(Double.toString(year));
183                         break;
184                     case 2:
185                         sum=Double.parseDouble(t1.getText());
186                         year=Double.parseDouble(t2.getText());
187                         rate=Double.parseDouble(t3.getText());
188                         capital=sum/(year*rate/100+1);
189                         t4.setText(Double.toString(capital));
190                         break;
191                     case 3:
192                         capital=Double.parseDouble(t1.getText());
193                         sum=Double.parseDouble(t2.getText());
194                         year=Double.parseDouble(t3.getText());
195                         rate=(sum/capital-1)/year*100;
196                         t4.setText(Double.toString(rate));
197                         break;
198                     case 4:
199                         capital=Double.parseDouble(t1.getText());
200                         year=Double.parseDouble(t2.getText());
201                         rate=Double.parseDouble(t3.getText());
202                         sum=capital*(1+rate/100*year);
203                         t4.setText(Double.toString(sum));
204                         break;
205                     default:
206                         break;
207                     }
208                 }
209                 else {
210                     switch (flag) {
211                     case 1:
212                         capital=Double.parseDouble(t1.getText());
213                         sum=Double.parseDouble(t2.getText());
214                         rate=Double.parseDouble(t3.getText());
215                         year=Math.log(sum/capital)/Math.log(1+rate/100);
216                         t4.setText(Double.toString(year));
217                         break;
218                     case 2:
219                         sum=Double.parseDouble(t1.getText());
220                         year=Double.parseDouble(t2.getText());
221                         rate=Double.parseDouble(t3.getText());
222                         capital=sum/Math.pow((1+rate/100),year);
223                         t4.setText(Double.toString(capital));
224                         break;
225                     case 3:
226                         capital=Double.parseDouble(t1.getText());
227                         sum=Double.parseDouble(t2.getText());
228                         year=Double.parseDouble(t3.getText());
229                         rate=(Math.pow((sum/capital),1/year)-1)*100;
230                         t4.setText(Double.toString(rate));
231                         break;
232                     case 4:
233                         capital=Double.parseDouble(t1.getText());
234                         year=Double.parseDouble(t2.getText());
235                         rate=Double.parseDouble(t3.getText());
236                         sum=capital*Math.pow((1+rate/100),year);
237                         t4.setText(Double.toString(sum));
238                         break;
239                     default:
240                         break;
241                     }
242                 }
243             }
244         });
245         btnNewButton.addActionListener(new ActionListener() {
246             @Override
247             public void actionPerformed(ActionEvent e) {
248             }
249         });
250         btnNewButton.setBounds(53, 181, 90, 23);
251         contentPane.add(btnNewButton);
252     }
253 }
![]()
![]()
![]()