Sep 20

Botones flotantes

Esta es una calculadora que hice un día que me aburría. La hice para entretenerme.

¿Qué tiene de entretenido hacer una calculadora?. Bueno, pues hacer una calculadora que no funcione como las calculadoras normales. Intenta usarla y verás lo que pasa.

Para los que les interese el código, simplemente hace falta una clase Hilo que es la que se encarga de mover un componente por la pantalla

 class ElHilo extends Thread {
    private Window w;
    private double t=0;
    private double A=Math.random()*300;
    private double B=Math.random()*300;
    private double a=Math.random()*8-4;
    private double b=Math.random()*8-4;
    private Point pOriginal;
    public ElHilo(Window w) {
        this.w = w;
        pOriginal = w.getLocation();
    }
    public void run() {
        while (true) {
            double dx = A*Math.sin(a*t);
            double dy = B*Math.cos(b*t-Math.PI/2);
            w.setLocation( pOriginal.x+(int)dx, pOriginal.y+(int)dy);
            t=t+0.01;
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

y un método recursivo en algún sitio capaz de ir rebuscando en el árbol de componentes para hacer "flotar" los que nos interesen

    public void meteEnWindows(Component componente) {
        if ((componente instanceof JButton) || (componente instanceof JTextField))
        {
        Point p;
        try {
            p = componente.getLocationOnScreen();
        } catch(Exception e) {
            return;
        }
        Window w = new Window(SwingUtilities.getWindowAncestor(componente));
        w.setLocation(p);
        w.add(componente);
        w.pack();
        w.setVisible(true);
        ElHilo hilo = new ElHilo(w);
        hilo.start();
        }
        if (componente instanceof Container) {
            Component[] hijos = ((Container)componente).getComponents();
            int numeroComponentes = ((Container)componente).getComponentCount();
            for (int i=0;i<numeroComponentes;i++)
                meteEnWindows(hijos[i]);
        }
    }
 

Pues nada, ahí está para el que guste de estas chorradas.

2 Responses to “Botones flotantes”

  1. ChicasMonas.info - Las chicas más guapas » Botones flotantes Says:

    […] Este blog que estoy leyendo ultimamente escribio un post muy interesante, Aqui os pongo un extracto frikis!!: Esta es una calculadora que hice un día que me aburría. La hice para entretenerme. ¿Qué tiene de entretenido hacer una calculadora?. Bueno, pues hacer una calculadora que no funcione como las calculadoras normales. Intenta usarla y verás lo que pasa. Para los que les interese el código, simplemente hace falta una clase Hilo Posted in Diario de Programación ( 19 links from 10 sites) […]

  2. Huev@s Says:

    Orales, se ve chido!!!

Leave a Reply