Shirogane Posted August 3 Share Posted August 3 (edited) 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: 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 August 3 by Shirogane Link to comment Share on other sites More sharing options...
AdeM nWo Posted August 3 Share Posted August 3 I have tried it and it works all good, its simple and easy to understand. Goodjob ! Link to comment Share on other sites More sharing options...
AdeM nWo Posted August 6 Share Posted August 6 Thanks for your Creation ! Link to comment Share on other sites More sharing options...
Recommended Posts