Introducción
Ejemplo
Widgets
Calculadora
Jalisco
Adivinar
Calculadora

El siguiente ejemplo es una calculadora basada en el uso de Hisiuin. Existe manejo de eventos.

import Hisiuin.*;
public class Calculadora extends Wwindow{

    private boolean flotante, reset;
    private float resultado;
    char op;
    public Calculadora(){

        }
   
    public void init(){
        int borde[] = {5,5,5,5};
        setSize(1,1,5,1);
        put(1,1,new Wtextfield("           0"),"visor");
        // Hacemos que el visor no sea editable
        ((Wtextfield)get(1,1)).setEditable(false);

        // Ponemos las teclas de la calculadora
        putButton(1,2,"1");
        putButton(2,2,"2");
        putButton(3,2,"3");
        putButton(4,2,"+");
        putButton(5,2,"I");

        putButton(1,3,"4");
        putButton(2,3,"5");
        putButton(3,3,"6");
        putButton(4,3,"-");
        putButton(5,3,"C");
       
        putButton(1,4,"7");
        putButton(2,4,"8");
        putButton(3,4,"9");
        putButton(4,4,"/");

        putButton(1,5,"0");
        putButton(2,5,"=");
        putButton(3,5,".");
        putButton(4,5,"*");

        // se establece que ocupen todo el espacio de la celda
        set(ALL, ALL, FILL, BOTH );

        // se establece borde entre los widgets
        set(ALL, ALL, BORDER, borde );

        // se establece diferentes colores para las teclas
        set(ALL, 3, FOREGROUND, BLUE );
        set(ALL, 4, FOREGROUND, YELLOW );
        set(ALL, 5, FOREGROUND, RED );
        set(ALL, 6, FOREGROUND, GREEN );
        set(ALL, 8, FOREGROUND, RED );

        // se establece tipo de letra para todos de tipo courier y tamaño 24
        set(ALL,ALL,FONT,new Wfont("courier",PLAIN,24));

        flotante = false;
        reset = false;
        op = ' ';
        debug();
        }
  
    // funcion que sirve para las operaciones.
    private float operar( float operando1, float operando2, char op ){
        switch (op){
            case '+' :
                return (operando1 + operando2); 
            case '-' :
                return (operando1 - operando2); 
            case '/' :
                return (operando1 / operando2); 
            case '*' :
                return (operando1 * operando2); 
            }
            return(0);
        }
       
    public void widgetAction( Wevent e){
              
        // se procesa los diferentes llamados de las teclas de la calculadora.
        if (e.mSource.equals("I")){
            System.exit(1);
            }
        else if (e.mSource.equals("C")){
            ((Wtextfield)get(1,1)).setField("           0");
            flotante = false;
            resultado = 0;
            op = ' ';
            }
        else if (e.mSource.equals("+") || e.mSource.equals("*") || e.mSource.equals("-") ||        
                   e.mSource.equals("/") || e.mSource.equals("=") ){
            flotante = false;
            reset = true;
            if (op != ' '){
                resultado = operar( resultado,
                                            (new Float( ((Wtextfield)get(1,1)).getField()) ).floatValue(), op );
                ((Wtextfield)get(1,1)).setField( (new Float( resultado ) ).toString() );
                }
            else
                resultado = (new Float( ((Wtextfield)get(1,1)).getField()) ).floatValue();
            if (!e.mSource.equals("="))
                op = ((e.mSource).toCharArray())[0];
            else
                op = ' ';
            }
        else if (e.mSource.equals(".")){
            if (reset == true){
                reset = false;
                ((Wtextfield)get(1,1)).setField("           0");
                }
            if ( flotante == false ){
                StringBuffer visor = new StringBuffer(((Wtextfield)get(1,1)).getField());
                visor.append(e.mSource);
                ((Wtextfield)get(1,1)).setField(visor.substring(1));
                flotante = true;
                }
            }
        else if (e.mType.equals("Wbutton")){
            if (reset == true){
                reset = false;
                ((Wtextfield)get(1,1)).setField("            ");
                }
            int i = (new Integer(e.mSource)).intValue();
            switch(i){
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                    if ( (((Wtextfield)get(1,1)).getField()).compareTo("           0") == 0 ){
                        ((Wtextfield)get(1,1)).setField("           " + i);
                        }
                    else{
                        StringBuffer visor = new StringBuffer(((Wtextfield)get(1,1)).getField());
                        visor.append(e.mSource);
                        ((Wtextfield)get(1,1)).setField(visor.substring(1));
                        }
                }
            }
        }
  
    public static void main( String args[] ){
        Calculadora e = new Calculadora();
    }

}

El resultado es el siguiente: