Como puedo crear una calculadora de matrices en una ventana

Nuevamente yo, he terminado satisfactoriamente mi anterior proyecto gracias a algunos consejos que me proporcionaron, ahora tengo un problema mas grande. Tengo que iniciar un nuevo proyecto pero esta vez es de matrices, tengo la idea clara de como se hace una matriz en java pero referente a lo que es sumar, restar, multiplicar, etc., solo se hacerlo en papel. Lo que se me solicita es primero solicitar al usuario el tamaño ambas matrices y después que seleccione la operación (o en el caso viceversa, primero operación luego el ingreso del tamaño), ya después serian los valores.

Dejando un poco de lado la ventana que yo pienso es mas sencilla de hacer mi conflicto empieza con el simple hecho de que no se como hacer que se identifique el tamaño, se guarden la o las matrices, luego se guarde cada valor del usuario y al final se haga la operación correspondiente (aquí también sale cómo debo imprimirlo....).

Por favor alguien que me ayude a entender y me guié en como debo iniciar, desarrollar y finalizar este proyecto!
De antemano, gracias por tomarse el tiempo de leer.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Re: matrices

 

He aquí algunas sugerencias:

  • Utiliza un JComboBox para seleccionar el tipo de operación (Suma, Resta, etc).

  • De acuerdo al tipo de operación, muestra u oculta una serie de JSpinner's, para determinar las dimensiones de cada matriz.

  • Para introducir cada matriz, tienes varias opciones. Por ejemplo, un arreglo bidimensional de JTextField's o un JTable.

  • Para mostrar el resultado, puedes utilizar nuevamente un arreglo de JTextField's o un JTable.

¡Por si sirve de algo!

Imagen de Gallosuarez

Calculadora ..

Soy neofito en esto de la programada en Java ... y realicé el ejercicio para aprender más ... treté de utilizar las nuevas cosas del API del JDK 1.8 ... bienvenida cualquier crítica constructiva ...

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.util.stream.Stream;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

/**
 *
 * @author Gernardo Suarez Trejo
 */

public class Calculadora extends JFrame {
   
    private final JTextArea display = new JTextArea(2, 17);
    private JButton[] btnArray;

    private void init() {
        display.setEditable(false);
        final double[] operands = {0.0, 0.0};
        final String[] operator = {""};
        final Stream<String> labels = Stream.of("7", "8", "9", "*", "4", "5", "6", "/",
                "1", "2", "3", "+", "0", ".", "C", "-", "=");
        btnArray = labels.map(JButton::new)
                .map((JButton btn) -> {
                    btn.addActionListener(evt -> {
                        String text = btn.getText();
                        if ("C".equals(text)) {
                            operands[0] = operands[1] = 0;
                            display.setText("");
                        } else if (("*".equals(text) || "/".equals(text) || "+".equals(text)
                        || "-".equals(text)) && !"".equals(display.getText())) {
                            operands[0] = Double.parseDouble(display.getText().trim());
                            operator[0] = text;
                            display.setText("");
                        } else if ("=".equals(text)) {
                            operands[1] = Double.parseDouble(display.getText().trim());
                            double result = 0;
                            if ("*".equals(operator[0])) result = operands[0] * operands[1];
                            if ("/".equals(operator[0])) result = operands[0] / operands[1];
                            if ("+".equals(operator[0])) result = operands[0] + operands[1];
                            if ("-".equals(operator[0])) result = operands[0] - operands[1];
                            display.setText(String.format("%s", result));
                            operator[0] = "";
                        } else display.append(text);
                    });
                    return btn;
                }).toArray(JButton[]::new);
    }

    public Calculadora() {
        setTitle("Calculadora");
        init();
        JPanel btnPane = new JPanel(new GridLayout(5, 4));
        for (JButton btn : btnArray) btnPane.add(btn);
        setLayout(new BorderLayout(3, 3));
        add(display, BorderLayout.NORTH);
        add(btnPane, BorderLayout.CENTER);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        pack();
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new Calculadora());
    }

}