import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Calculator("四则运算计算器");
}
}
class Calculator extends JFrame{
public Calculator(String title) {
// TODO Auto-generated constructor stub
super(title);
String[] sign= {"+","-","*","/"};
JComboBox<String> jc=new JComboBox<>(sign);
JTextField num1=new JTextField(10);
JTextField num2=new JTextField(10);
JTextField num3=new JTextField(10);
JButton button=new JButton("=");
button.addActionListener(new CalculatorListener(num1, num2, num3,jc));
setLayout(new FlowLayout());
add(num1);
add(jc);
add(num2);
add(button);
add(num3);
setVisible(true);
setSize(700,300);
}
}
class CalculatorListener implements ActionListener{
private JTextField num1,num2,num3;
private JComboBox jc;
public CalculatorListener(JTextField num1,JTextField num2,JTextField num3,JComboBox<String> jc) {
// TODO Auto-generated constructor stub
this.num1=num1;
this.num2=num2;
this.num3=num3;
this.jc=jc;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String s=(String) jc.getSelectedItem();
try{
if(s.equals("+")) {
BigDecimal n1=new BigDecimal(num1.getText());
BigDecimal n2=new BigDecimal(num2.getText());
num3.setText(""+n1.add(n2));
}
}catch (NumberFormatException numberFormatException) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, "输入的不是数值");
}
if(s.equals("-")) {
BigDecimal n1=new BigDecimal(Integer.parseInt(num1.getText()));
BigDecimal n2=new BigDecimal(Integer.parseInt(num2.getText()));
num3.setText(""+n1.subtract(n2));
}
if(s.equals("*")) {
BigDecimal n1=new BigDecimal(Integer.parseInt(num1.getText()));
BigDecimal n2=new BigDecimal(Integer.parseInt(num2.getText()));
num3.setText(""+n1.multiply(n2));
}
if(s.equals("/")) {
BigDecimal n1=new BigDecimal(Integer.parseInt(num1.getText()));
BigDecimal n2=new BigDecimal(Integer.parseInt(num2.getText()));
num3.setText(""+n1.divide(n2));
}
}
}