Klick auf Bildschirm

JAVAnnik

Bekanntes Mitglied
Hallo alle miteinander,

ich hab mal wieder ein kleines Problem ;(
Und zwar will ich die Koordinaten eines Mausklicks herauszufinden. Ich hab schon mal ein Programm geschrieben bei dem man die Koordinaten innerhalb des Frames bei einem Klick angezeigt bekam - wie das geht weiß ich. :toll:
Nun will ich aber das die Kooardinaten auf den gesamten Bildschirm gesehen haben und vorallem auch die Koordinaten eines Klicks außerhalb des Frames angeben.
 
Guten Abend,

Java:
import java.awt.MouseInfo;
import java.awt.Point;

public class MausPos{

	public static void main(String[] args) {
		while(true){
			Point pointOnScreen  = MouseInfo.getPointerInfo().getLocation();
			int mausX = pointOnScreen.x;
			int mausY = pointOnScreen.y;
			System.out.println("X:" + mausX + "  Y:" + mausY);
		}
	}
}

so geht's !

Gruß
 
erstmal danke für die schnellen Antworten !!

Guten Abend,

Java:
import java.awt.MouseInfo;
import java.awt.Point;

public class MausPos{

	public static void main(String[] args) {
		while(true){
			Point pointOnScreen  = MouseInfo.getPointerInfo().getLocation();
			int mausX = pointOnScreen.x;
			int mausY = pointOnScreen.y;
			System.out.println("X:" + mausX + "  Y:" + mausY);
		}
	}
}

so geht's !

Gruß

Nun hab ich aber noch das Problem mit dem Klick neben dem Frame, denn dieser Code zeigt ja die aktuelle Position an und ich habe versucht den Wert bei einem Klick durch den MouseListener anzeigen zu lassen, aber das geht nur im Frame. So sieht mein MouseListener dann aus:

Java:
addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent evt) {
          Point pointOnScreen  = MouseInfo.getPointerInfo().getLocation();
          int mausX = pointOnScreen.x;
          int mausY = pointOnScreen.y;
          jTextArea1.setText("X:" + mausX + "  Y:" + mausY);
      }
    });
 
Alles in Richtung MouseListener wird da nicht funktionieren. Aber ich hab' grad mal geschaut: Anscheinend gibt's wirklich keine Möglichkeit, rauszufinden, ob ein MouseButton gedrückt ist ???:L :bahnhof: Kann sein dass man da tatsächlich mit JNI rangehen muss...
 
Vielen Dank für die Antworten, aber mir als Anfänger wird das nun etwas zu kompliziert !!! ???:L ???:L

Kann man nicht irgendwie ein zweites nicht sichtbares (hier liegt mein Problem - unsichtbar bekomm ichs, aber es tut sich dann halt auch nix mehr) frame über den gesamten Bildschirm legen und mit dessen Hilfe die Position bestimmen?
 
Durch die API kommst du ohne anderen Code nicht durch - da liegt das Problem.

Unsichtbares den Bildschirm ausfüllendes Frame? Der "Klick dahinter" wird dann nicht mehr funktionieren.
 
Ganz allgemein: MouseEvents mit Listenern und so kann man NUR innerhalb eines sichtbaren Swing-Fensters abfangen. Was außerhalb des "Java-Fensters" passiert kriegt Java nicht mit.

Man kann eventuell eine Betriebssystemspezifische Lösung basteln, mit JNI, aber das könnte ziemlich aufwündig werden - zumal man sich dann auch erstmal in die Windows-API einlesen muss. (Vielleicht gibt es da aber auch schon was vorgefertigtes, eine KURZE(!) Websuche liefert sowas wie Java Global Keyboard/Mouse Hook – JNI • Blog Archive • Jotschi’s Blog , vielleicht gibt's auch was, was man nicht erst selbst compilieren muss.
 
Nur mal so als Idee ;-):
Du könntest eine FullScreen Applikation schreiben, die einen Screenshot des Bildschirms zeigt.
Bei einem MouseClick merkst Du Dir die Position minimierst das Fenster, machst mittels der Klasse Robot den MouseClick an der gespeicherten Position (wartest eventuell) machst einen Screenshot (ebenfalls mit der Klasse Robot) und zeigst Deine Applikation wieder im Fullscreen Modus mit dem neuen Screenshot an, usw.

Bei Tastatureingaben ausserhalb der Applikation kommt man an JNI allerdings nicht vorbei.
 
ja das sowas hat ich mir auch schon gedacht, aber dann geibt es halt Probleme wenn man sich durch die Klicks eigentlich etwas auf dem Bildschirm ändert.
 

Zurück
Oben