此版本复利计算器 基本实现了所要求的全部功能,并对输入的数据进行出错处理了,而且对代码进行了整合与复用
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;
}
}
}