package org.magmax.masterjava.tema5.calculadora; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.ItemSelectable; import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; public class Calculadora extends JFrame { private static final long serialVersionUID = 1434355247225782925L; private JSpinner number1; private JSpinner number2; private JLabel result; private int operation; private Container mainpane; public Calculadora() { super(); setBounds(100, 100, 200, 130); setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS)); mainpane = getContentPane(); initComponents(); } public Calculadora(Container contentPane) { super(); contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.X_AXIS)); mainpane = contentPane; initComponents(); } private void initComponents() { addFirstNumber(); addOperator(); addSecondNumber(); addEquals(); addResult(); } private void addResult() { result = new JLabel("0"); mainpane.add(result); } private void addEquals() { JButton button = new JButton("="); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { result.setText(calculate()); } private String calculate() { Integer retval = new Integer(0); Integer num1 = (Integer) number1.getValue(); Integer num2 = (Integer) number2.getValue(); switch (operation) { case 1: retval = num1 + num2; break; case 2: retval = num1 - num2; break; case 3: retval = num1 * num2; break; case 4: if (num2 == 0) return "#inval"; retval = num1 / num2; break; } return retval.toString(); } }); mainpane.add(button); } private void addSecondNumber() { number2 = new JSpinner(); number2.setModel(new SpinnerNumberModel()); mainpane.add(number2); } private void addOperator(ButtonGroup group, JPanel panel, String name, final int value) { JRadioButton button = new JRadioButton(name); group.add(button); panel.add(button); button.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) operation = value; } }); } private void addOperator() { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); ButtonGroup group = new ButtonGroup(); addOperator(group, panel, "+", 1); addOperator(group, panel, "-", 2); addOperator(group, panel, "*", 3); addOperator(group, panel, "/", 4); mainpane.add(panel); } private void addFirstNumber() { number1 = new JSpinner(); number1.setModel(new SpinnerNumberModel()); mainpane.add(number1); } }