Sigueme en twitter @SuarezDeveloper

Localizar / modificar la posición del ratón con Java

A continuación pongo el código para como localizar y posicionar el ratón del sistema usando Java. Lo que hace el programita de ejemplo es restringir el movimiento del ratón a un rectángulo en el centro de la pantalla de 200×200 px.


import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.awt.Toolkit;

public class Ubicacion extends Thread
{
   public static void main(String args[]) throws InterruptedException, AWTException
   {
      Point p;
      Robot robot = new Robot();
      while (true)
      {
         //Para no consumir toda la CPU
         sleep(1); 
         //Recupera la posición del ratón
         p = MouseInfo.getPointerInfo().getLocation(); 
         if (p.x > Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 + 100)
            //Mueve el ratón a la posición deseada
            robot.mouseMove((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 + 100, p.y); 

         if (p.y > Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 + 100)
            robot.mouseMove(p.x, (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 + 100);

         if (p.x < Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 100)
            robot.mouseMove((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2 - 100, p.y);

         if (p.y < Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 100)
            robot.mouseMove(p.x, (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2 - 100);
      }
   }
}

Anuncios
Categorías:Java

Como leer/escribir en el portapapeles (clipboard) con Java

Hace algún tiempo pensé que sería interesante tener un gestor propio del portapapeles. Siempre que copiamos algo el portapapeles nos machaca lo anterior y a veces es interesante tener un programa que gestione todo eso. Ya se que existen muchos programas que lo hacen, pero cuando las cosas las haces tu sabes las limitaciones que tiene y puedes modificarlas/mejorarlas a tu gusto.
Lo que pego abajo es una clase que se comunica con el portapapeles pudiendo leer y escribir cadenas en él.
Aunque no lo he tratado supongo que esto será extensible a ficheros sin demasiada complicación.

Estuve mirando la implementación del listener del clipboard pero no se porqué no lanzaba el evento al copiar algo nuevo. Si tengo tiempo volveré a mirar a ver si consigo hacerlo funcionar (trabajaba sobre Windows en ese momento)

import java.awt.Toolkit;
import java.awt.datatransfer.*;
import java.io.IOException;

public class BoardListener implements ClipboardOwner
{
	// Método que recupera una cadena del portapapeles.
	public String getClipboard()
 	{
 		// Obtenemos el contenido del portapapeles del sistema.
 		Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
		try
 		{
			// Comprobamos que la información sea de tipo cadena, lo recuperamos y lo devolvemos.
 			if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor))
 			{
 				String text = (String) t.getTransferData(DataFlavor.stringFlavor);
 				return text;
 			}
 		}
 		catch (UnsupportedFlavorException e)
 		{
 			e.printStackTrace();
 		}
 		catch (IOException e)
 		{
 			e.printStackTrace();
 		}
		// Si lo copiado no es un texto, devolvemos null
 		return null;
 	}

	// Método que inserta en el portapapeles una cadena.
	 public void setClipboard(String str)
 	{
 		StringSelection ss = new StringSelection(str);
 		Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, this);
	 }

	// Necesario para poder implementar la interfaz ClipboardOwner. Para nosotros no tendrá uso, pero es obligatorio "implementarlo".
	 @Override
	 public void lostOwnership(Clipboard clipboard, Transferable contents)
 	{
		// TODO Auto-generated method stub
	}
}
Categorías:Java

JKamaleon

Hace un tiempo me encontré con un programa llamado Kamaleon, el cual era muy útil pues partía archivos en partes de tamaño fijo o aleatorio. La gracia y diferencia con otros programas era que además camuflaba las partes con imágenes. Empecé a usarlo y vi que tenía una limitación bastante grande, el programa explotaba cuando el archivo a partir era superior a cierto tamaño (no recuerdo si 2 o 4 gigas). Así que me decidí y me puse a crear mi propio programa, el JKamaleon (no compatible con el original).

El código es algo extenso y está programado en Java. La verdad es que no está programado eficientemente pero realiza su cometido a la perfección, parte y une archivos.

A continuación os pongo el enlace del código del programa y el archivo JKamaleon.jar listo para usar.

Enlace de descarga: http://dl.dropbox.com/u/22472292/Descargas/JKamaleon.rar

Categorías:Java

Inauguramos página muchachos

Después de su creación en Diciembre y varios meses si tocarla, he decidido empezar a darle uso a las prestaciones que wordpress me ofrece y comenzar a subir códigos java/c/c++ y todo lo que se me vaya ocurriendo.

Tengo hechos un par de programitas en Java con interfaz gráfica como por ejemplo un gestor de subida a imageshack (con capacidad de login), un programa para partir archivos en partes del tamaño que desees camuflándolos en falsas imágenes y muchas más cositas que iréis viendo conforme vaya actualizando el blog.

Categorías:Uncategorized