Primera aplicación con AWT

En momentos como este, hecho de menos la época en la que empecé a programar con Visual Basic. Todo era tan fácil... arrastrar campos de texto, hacer doble click en los botones, seleccionar eventos, escribir 3 lineas, y todo funcionaba. En cambio, es mirar lo que he tenido que hacer en Java para escribir un programa super cutre que no hace más que calcular el máximo común divisor, y se me cae el mundo encima. No dudo que haya formas más fáciles de hacerlo, de hecho, ni me he puesto a indagar entre las opciones que puede brindar NetBeans para la realización de interfaces. Lo que he hecho no es más que seguir un tutorial, que tiene pinta de estar bastante anticuado, e ir metiendo modificaciones y un poco de freestyle, pero por lo menos funciona correctamente, siempre que se metan valores válidos en los campos de texto. Próximamente, ya volveré a tocar este código para que funcione bien aunque no se metan valores válidos.

import java.awt.*;

public class AppAWT extends Frame {
    static final int ANCHO = 200;
    static final int ALTO  = 200;
    Dimension filas;
    Label eti1, eti2, lblmcd;
    TextField num1, num2;
    Button calc;

    public AppAWT()
    {
        super("Primera prueba con AWT"); //Ponerle un título a la ventana
        filas = new Dimension(ANCHO,30);
        setLayout(new FlowLayout());
        eti1 = new Label("Numero 1: ");
        num1 = new TextField(4);
        eti2 = new Label("Numero 2: ");
        num2 = new TextField(4);
        calc = new Button("Calcular mcd");
        lblmcd = new Label("",Label.CENTER);
        lblmcd.setPreferredSize(filas);
        Panel fila1 = new Panel();
        fila1.setPreferredSize(filas);
        fila1.add(eti1);
        fila1.add(num1);
        add(fila1);
        Panel fila2 = new Panel();
        fila2.setPreferredSize(filas);
        fila2.add(eti2);
        fila2.add(num2);
        add(fila2);
        Panel fila3 = new Panel();
        fila3.setPreferredSize(filas);
        fila3.add(calc);
        add(fila3);
        Panel fila4 = new Panel();
        fila4.setPreferredSize(filas);
        fila4.add(lblmcd);
        add(fila4);
        pack();
        resize(ANCHO,ALTO);
        show();
    }

    public boolean handleEvent(Event evt)
    {
        if (evt.id == Event.WINDOW_DESTROY)
        {
            System.exit(0);
            return true;
        }
        if (evt.target instanceof Button)
        {
            lblmcd.setText(String.valueOf(mcd(Integer.parseInt(num1.getText()),Integer.parseInt(num2.getText()))));
        }
        return false;
    }

    public static void main(String args[])
    {
        new AppAWT();
    }

    public int mcd(int x, int y)
    {
        if (x % y == 0)
            return y;
        else
            return mcd(y, x % y);
    }
}

0 comentarios:

Publicar un comentario