Ich denke gerade darüber nach, wie man am schönsten dem Mauscursor auf der Seite begrenzen (und ihm gleichzeitig ändern) kann.
Dazu habe ich mir folgende Klasse geschrieben:
Nur funktioniert das nicht so besonderst gut, und ich bin auch der Meinung, dass es sicher noch schöner ginge. Nur wie? Eventuell JComponent mit MouseListener?
Dazu habe ich mir folgende Klasse geschrieben:
Java:
package ingame;
import java.awt.Cursor;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import core.Main;
public class Scroll extends Object implements Runnable
{
private int scrollX;
private int scrollY;
private boolean breaknow;
private BufferedImage[] bi;
private Main m;
public Scroll(Main m)
{
super();
this.m = m;
this.loadImages();
}
private void loadImages()
{
this.bi = new BufferedImage[5];
try
{
this.bi[2] = ImageIO.read(new File("img\\cursor_right.png"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void run()
{
Robot r = this.createRobot(); //new Robot(), wegen try/catch
while(!this.breaknow) //Thread wenn er nichtmehr gebraucht wird abbrechen.
{
Point p = MouseInfo.getPointerInfo().getLocation(); //Mousepos als Pointer-Var.
System.out.println(p.x + " - " + p.y); //Hilfsmaßname.
if(p.x >= 1003) //Ist Cursor am seitlichen Bildschirmrand?
{
r.mouseMove(1003, p.y); //Wieder am Rand positionieren.
}
if(p.x == 1003) //Ist Cursor am seitlichen Bildschirmrand?
{
this.setCursor(2); //Cursor verändern.
this.scrollX+= 5; //Scrollen.
this.m.repaint(); //Neu zeichnen.
}
this.warte(40L); //Thread.sleep().
}
}
private Robot createRobot()
{
Robot r = null;
try
{
r = new Robot();
}
catch(Exception e)
{
e.printStackTrace();
}
return(r);
}
private void setCursor(int i)
{
Cursor c = this.m.getToolkit().createCustomCursor(
this.bi[i],
new Point(10,10), "Cursor" );
m.setCursor(c);
}
private void warte(long l)
{
try
{
Thread.sleep(l);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
Nur funktioniert das nicht so besonderst gut, und ich bin auch der Meinung, dass es sicher noch schöner ginge. Nur wie? Eventuell JComponent mit MouseListener?