← Voltar aos projetos ← Back to projects ← Volver a proyectos

Calculadora Swing

Projeto de exemplo Example project Proyecto de ejemplo

Calculadora de secretária construída em Java, com interface gráfica Swing. Não faz parte do meu stack principal (front-end web) — está aqui para mostrar que a lógica de programação atravessa linguagens. Desktop calculator built in Java, with a Swing graphical interface. It's not part of my main stack (front-end web) — it's here to show that programming logic carries across languages. Calculadora de escritorio construida en Java, con interfaz gráfica Swing. No forma parte de mi stack principal (front-end web) — está aquí para mostrar que la lógica de programación atraviesa lenguajes.

JavaSwingPOO
Pré-visualização da interface da Calculadora Swing, com a paleta de marca

Pré-visualização da interface, fiel ao código-fonte e à paleta de marca (ver secção de código, abaixo). Interface preview, matching the source code and brand palette (see code section below). Vista previa de la interfaz, fiel al código fuente y a la paleta de marca (ver sección de código, abajo).

A lógica de cálculo The calculation logic La lógica de cálculo

A interface (Swing/NetBeans) trata dos botões; esta classe trata da parte que interessa — interpretar a expressão digitada e calcular o resultado, sem depender de bibliotecas externas. The interface (Swing/NetBeans) handles the buttons; this class handles the part that matters — parsing the typed expression and calculating the result, without relying on external libraries. La interfaz (Swing/NetBeans) se encarga de los botones; esta clase se encarga de la parte que importa — interpretar la expresión escrita y calcular el resultado, sin depender de librerías externas.

Versão corrigida: tratamento de divisão por zero, suporte a números negativos e a vários operadores em sequência. Corrected version: division-by-zero handling, negative number support, and multiple sequential operators. Versión corregida: manejo de división por cero, soporte de números negativos y varios operadores en secuencia.

private double calcular(double a, double b, char operador) {
    switch (operador) {
        case SOMA:           return a + b;
        case SUBTRACCAO:     return a - b;
        case MULTIPLICACAO:  return a * b;
        case DIVISAO:
            if (b == 0) {
                throw new ArithmeticException("Divisão por zero");
            }
            return a / b;
        default:
            return b;
    }
}

Excerto de MotorCalculo.java — a classe de lógica pura, isolada da interface gráfica, sem depender de bibliotecas externas. Excerpt from MotorCalculo.java — the pure logic class, isolated from the GUI, with no external dependencies. Extracto de MotorCalculo.java — la clase de lógica pura, aislada de la interfaz gráfica, sin dependencias externas.

A mesma lógica, no meu stack principal Same logic, in my main stack La misma lógica, en mi stack principal

Depois de resolver o problema em Java, reconstruí a mesma calculadora em HTML, CSS e JavaScript — a versão que corre mesmo aqui no browser, sem instalação nenhuma. After solving the problem in Java, I rebuilt the same calculator in HTML, CSS and JavaScript — the version that actually runs right here in the browser, no installation needed. Después de resolver el problema en Java, reconstruí la misma calculadora en HTML, CSS y JavaScript — la versión que corre aquí mismo en el navegador, sin instalación.

Captura de ecrã — Calculadora web em uso
HTMLCSSJavaScript
Abrir a Calculadora Web → Open the Web Calculator → Abrir la Calculadora Web →