Jump to content

[JAVA]Calculator


Shirogane
 Share

Recommended Posts

  • Descriere: Un calculator care efectuează operaţiile simple: adunare, scădere, înmulţire, împărţire. Suplimentar e adăugat un buton de clear.

 

Teorie: Am folosit ambele clase mari pentru lucrul cu interfeţe grafice în java, atât SWING cât şi AWB. Am declarat fiecare varibilă ca fiind de tip privat. Ca şi clase de bază am una pentru acţiunea fiecărui buton din interfaţa unde i-am dat şi un nume sugestiv ca să se ştie că lucrăm cu actionlistener, am o clasă pentru interfaţă unde am adăugat butoanele ce se pot regăsi în imagine, pentru culori am creat o clasă separată (culorile erau opţionale) şi bineînţeles am constructorul pentru iniţializare şi clasa main. 

 

 

 

  • Poze / Video: image.png.610d8121cbe212db96bc87d43328f4b8.png
  • Link de descărcare: Sursa.
  • Sursa (opțional): 
    Quote
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    public class Main extends JFrame implements ActionListener {
    
        private static final long serialVersionUID = 1L;
        private JTextField dsp;
        private JPanel btn_pan;
        private String[] btn_lab = {
                "7", "8", "9", "/",
                "4", "5", "6", "X",
                "1", "2", "3", "-",
                "0", "C", "=", "+"
        };
        private JButton[] btn = new JButton[btn_lab.length];
        private String opr = "";
        private double nr1, nr2, rez;
    
        private Color[] culori = {
                Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW,
                Color.ORANGE, Color.PINK, Color.CYAN, Color.MAGENTA
        };
    
        public Main() {
            super("Calculator");
            setResizable(false);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLayout(new BorderLayout());
            interf();
        }
    
        private void interf() {
            dsp = new JTextField();
            dsp.setEditable(false);
            add(dsp, BorderLayout.NORTH);
    
            btn_pan = new JPanel();
            btn_pan.setLayout(new GridLayout(4, 4, 10, 10));
    
            for (int i = 0; i < btn_lab.length; i++) {
                btn[i] = new JButton(btn_lab[i]);
    
                btn[i].addActionListener(this);
                btn[i].setBackground(culori[i % culori.length]);
                btn_pan.add(btn[i]);
            }
    
            btn_pan.setBackground(culori[culori.length - 1]);
    
            add(btn_pan, BorderLayout.CENTER);
            pack();
        }
    
        public void actionPerformed(ActionEvent azione) {
            String com = azione.getActionCommand();
    
            if ((com.charAt(0) >= '0' && com.charAt(0) <= '9') || com.equals(".")) {
                dsp.setText(dsp.getText() + com);
            } else if (com.equals("C")) {
                dsp.setText("");
            } else if (com.equals("=")) {
    
    
    
    
                nr2 = Double.parseDouble(dsp.getText());
                switch (opr) {
                    case "+":
                        rez = nr1 + nr2;
                        break;
                    case "-":
                        rez = nr1 - nr2;
                        break;
                    case "X":
                        rez = nr1 * nr2;
                        break;
                    case "/":
                        rez = nr1 / nr2;
                        break;
                }
                dsp.setText(String.valueOf(rez));
                opr = "";
            } else {
                if (!dsp.getText().isEmpty()) {
                    nr1 = Double.parseDouble(dsp.getText());
                    opr = com;
                    dsp.setText("");
                }
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(() -> {
                Main calc = new Main();
                calc.setVisible(true);
            });
        }
    }
    

     

  • Alte precizări: Poate fi testat. Să vă asiguraţi că numele clasei corespunde cu numele fişierului. În caz contrar, pentru funcţionare, se pot modifica. La descriere am explicat foarte pe scurt principiul codului. Pentru eventuale erori, nelămuriri legate de anumite părţi sau chiar întrebari din Java, folosiţi secţiunea de comentarii.
Edited by Shirogane
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.