- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- public class Calculator {
- private JLabel screen;
- private boolean start;
- private String operator;
- private double result;
- public Calculator() {
- operator = "=";
- start = true;
- JFrame frame = new JFrame();
- screen = new JLabel("0",JLabel.RIGHT);
- screen.setFont(new Font("Open Sans",Font.BOLD, 20));
- frame.add(screen, BorderLayout.NORTH);
- frame.add(buttonsPanel(),BorderLayout.CENTER);
- frame.setSize(300, 300);
- frame.setLocationRelativeTo(null);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- private JPanel buttonsPanel(){
- JPanel panel = new JPanel();
- panel.setLayout(new GridLayout(4,4));
- String buttons[] = {
- "7", "8", "9", "/",
- "4", "5", "6", "*",
- "1", "2", "3", "-",
- "0", ".", "=", "+"
- };
- for (int i = 0; i < buttons.length; i++) {
- panel.add(addButton(buttons[i]));
- }
- return panel;
- }
- private JButton addButton(String btnName){
- JButton btn = new JButton(btnName);
- btn.setFont(new Font("Open Sans", Font.BOLD, 16));
- btn.addActionListener(calcListener);
- return btn;
- }
- private ActionListener calcListener = new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- String v = ((JButton)e.getSource()).getText();
- System.out.println(v);
- if("/*+-=".indexOf(v) >= 0){
- calculate(v);
- }else{
- insertNumber(v);
- }
- }
- };
- public void calculate(String s){
- // System.out.println("calculate: " + s);
- double num = Double.parseDouble(screen.getText());
- if (operator.equals("=")) result = num;
- if (operator.equals("=")) result += num;
- if (operator.equals("=")) result -= num;
- if (operator.equals("=")) result *= num;
- if (operator.equals("=")) result /= num;
- screen.setText("" + result);
- operator = s;
- start = true;
- }
- public void insertNumber(String s){
- // System.out.println("insertNumber: " + s);
- if(start){
- screen.setText("");
- start = false;
- }
- screen.setText(screen.getText() + s);
- }
- public static void main(String[] args) {
- Calculator calc = new Calculator();
- }
- }