一个简单的计算器(Java)
直接贴代码喽~
package com.calcular.work;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import javax.swing.*;
public class MainActivity implements ActionListener {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainActivity().setlayout();
}
});
}
JPanel panelUP, panelDown;
JTextField textField;
public void setlayout() {
panelUP = new JPanel();
textField = new JTextField("0");
textField.setHorizontalAlignment(JTextField.RIGHT);
panelUP.add(textField);
panelUP.setLayout(new GridLayout());
panelUP.setSize(225, 30);
JButton btac = new JButton("AC");
JButton btdel = new JButton("Del");
btac.addActionListener(this);
btdel.addActionListener(this);
panelDown = new JPanel();
String[] bt = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
JButton[] button = new JButton[16];
panelDown.setLayout(new GridLayout(4, 4));
for (int i = 0; i < bt.length; i++) {
button[i] = new JButton(bt[i]);
panelDown.add(button[i]);
button[i].addActionListener(this);
}
JFrame frame = new JFrame("Calculator");
frame.setLayout(new BorderLayout());
frame.add(panelUP, BorderLayout.NORTH);
frame.add(panelDown, BorderLayout.CENTER);
frame.setVisible(true);
frame.setSize(225, 250);
frame.setLocationRelativeTo(null);
}
private double fnum, snum, result;
private int temp;
DecimalFormat dec = new DecimalFormat("0.00 ");
@Override
public void actionPerformed(ActionEvent e) {
String string = e.getActionCommand();
switch (string) {
case "+":
fnum = Double.parseDouble(this.textField.getText().toString());
textField.setText("");
temp = 1;
break;
case "-":
fnum = Double.parseDouble(this.textField.getText().toString());
textField.setText("");
temp = 2;
break;
case "/":
fnum = Double.parseDouble(this.textField.getText().toString());
textField.setText("");
temp = 3;
break;
case "*":
fnum = Double.parseDouble(this.textField.getText().toString());
textField.setText("");
temp = 4;
break;
case ".":
if (this.textField.getText().equals("")) {
textField.setText("0.");
}else {
textField.setText(textField.getText().toString() + ".");
}
break;
case "=":
snum = Double.parseDouble(textField.getText().toString());
switch (temp) {
case 1:
result = fnum + snum;
textField.setText(Double.toString(result));
break;
case 2:
result = fnum - snum;
textField.setText(Double.toString(result));
break;
case 3:
result = fnum / snum;
textField.setText(Double.toString(result));
break;
case 4:
result = fnum * snum;
textField.setText(Double.toString(result));
break;
default:
break;
}
break;
default:
if (textField.getText().toString().equals("0")) {
textField.setText(string);
}else {
textField.setText(textField.getText() + string);
}
break;
}
}
}