Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mausposition

2 views
Skip to first unread message

T.Brummund

unread,
May 13, 2004, 9:33:08 PM5/13/04
to
Hi,

ja ich weiß, ich werde wohl gesteinigt für meinen Wunsch, aber ich probiers
trotzdem:

Ich will die Mausposition auf dem Bildschirm ermitteln in einer Java-Anwendung.

Einfach mal ganz trivial gesagt:

public static void main(String[] s) {
System.out.println(getMousePosition());
}

Ich weiß, daß java das nur kann, wenn man Mouselistener auf java-Fenstern
anmeldet. Ich will aber die absolute Position der Maus haben, ohne ein
Java-Fenster zu haben, und außerdem nicht auf ein Fenster angewiesen sein.

Im Prinzip das Gegenteil von java.awt.Robot.mouseMove(int x, int y), was die
Maus ja an beliebige Koordinaten versetzen kann.

Ich weiß auch, daß nun als Antwort kommt, das man das nur mit JNI machen kann.
Aber ich habe keine große Lust für so eine kleine Sache mich da so
einzuarbeiten. Und auf den ersten Blick sieht mir das nicht trivial aus, wenn
man davon noch keinen Plan hat.

Auch google hat mir keinerlei vernünftige Ergebnisse gebracht. Hätte eigentlich
erwartet, das sowas schon mal wer gebraucht und veröffentlicht hätte.

Meine Bitte an die Leute, die täglich mit JNI arbeiten und sich somit auskennen:

Wäre es möglich, daß einmal zu implementieren und zur Verfügung zu stellen? Ja,
ich weiß, sowas wird nicht gerne gesehen nach fertigen Lösungen zu fragen, aber
ich will doch nur diese eine einzige Funktion haben und da steht es in keinem
vernünftigen Verhältnis, JNI komplett zu verstehen zu versuchen.

Und ja, es soll nur auf Windows laufen und ich will es nur privat auf meinem
einzigen Rechner unter Windows benutzen. Hinweise auf Plattformunabhängigkeit
und so sind daher zu vermeiden.

Gruß,
Tobias

PS: Ziemlich erbärmlich, das Java das immer noch nicht alleine kann.

Andreas Schröter

unread,
May 14, 2004, 2:51:12 AM5/14/04
to
> Einfach mal ganz trivial gesagt:
>
> public static void main(String[] s) {
> System.out.println(getMousePosition());
> }

So geht das leider nicht. Zum einen liefert Dir Java die Mausposition
wirklich nur bei einer Veränderung (move, click, etc.) und zum anderen auch
nur innerhalb von Java-Komponenten (z.B. Fenstern).
Du hast also zwei Möglichkeiten: 1.) JNI oder 2.) JNI

Ich bezweifle mal, daß man einfach nur ein transparentes Window in
Monitorgröße erstellen kann - auch da müßte man ja auf eine Veränderung der
Maus warten (also wieder ein move, click, etc.)

Andreas


Stefan Matthias Aust

unread,
May 14, 2004, 2:57:48 AM5/14/04
to
T.Brummund wrote:

> PS: Ziemlich erbärmlich, das Java das immer noch nicht alleine kann.

Nicht gleich über Java meckern...
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/PointerInfo.html


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U

wolff

unread,
May 14, 2004, 4:40:13 AM5/14/04
to
Andreas Schröter wrote:

> Ich bezweifle mal, daß man einfach nur ein transparentes Window in
> Monitorgröße erstellen kann

By the way, wie ginge das denn ?

Kris

Stefan Matthias Aust

unread,
May 14, 2004, 4:52:24 AM5/14/04
to
wolff wrote:

Mit AWT/Swing gar nicht und mit SWT vielleicht - man kann dort
unregelmäßig geformte Fenster darstellen und dann müsste auch eins
gehen, welches gar keine Form hat...

wolff

unread,
May 14, 2004, 5:05:09 AM5/14/04
to
Stefan Matthias Aust wrote:
> Mit AWT/Swing gar nicht und mit SWT vielleicht - man kann dort
> unregelmäßig geformte Fenster darstellen und dann müsste auch eins
> gehen, welches gar keine Form hat...


Also wenn ich das richtig verstehe ist SWT doch ein natives Gerüßt für
Guis, wie kann man da denn unregelmäßig geformte Fenster z.B ein rundes
Fenster machen? Kennst Du eine Bsp. Seite ? Würde mich jetzt brennend
interessieren.
TIA, Kris

Stefan Matthias Aust

unread,
May 14, 2004, 5:13:35 AM5/14/04
to
wolff wrote:

> Also wenn ich das richtig verstehe ist SWT doch ein natives Gerüßt für
> Guis, wie kann man da denn unregelmäßig geformte Fenster z.B ein rundes
> Fenster machen? Kennst Du eine Bsp. Seite ? Würde mich jetzt brennend
> interessieren.

Da Windows und X das eh können, gibt SWT diese Möglichkeit einfach
weiter. Man definiert eine Clipping-Region, die beschreibt, welcher
teil der gedachten rechteckigen Form tatsächlich nur sichtbar sein soll.

http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/snippits/snippet134.html

Andreas Schröter

unread,
May 14, 2004, 6:49:26 AM5/14/04
to
> > Ich bezweifle mal, daß man einfach nur ein transparentes Window in
> > Monitorgröße erstellen kann
>
> By the way, wie ginge das denn ?


Wie gesagt, ich bezweifle....
:-)

Andreas


T.Brummund

unread,
May 14, 2004, 8:10:18 AM5/14/04
to

Würde vermutlich auch nicht besonders viel bringen, denn den Fokus sollen ja
nach wie vor die anderen Anwendungen haben. Aber wie Stefan Aust erwähnte,
scheint java das ab 1.5 doch zu können, werd ich gleich mal die beta installen
;)

Tobias

Jan Kassens

unread,
May 14, 2004, 8:06:04 AM5/14/04
to
Stefan Matthias Aust wrote:
> Da Windows und X das eh können, gibt SWT diese Möglichkeit einfach
> weiter. Man definiert eine Clipping-Region, die beschreibt, welcher
> teil der gedachten rechteckigen Form tatsächlich nur sichtbar sein soll.
>
> http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/platform-swt-home/snippits/snippet134.html
Da das Snippet ja von Eclipse.org kommt wundere ich mich, dass das
Snippet bei mir (ich verwende eclipse 2.1 auf WinXP) nicht funtioniert.
Ich erhalte folgende Meldung vom (eclipse-)compiler:

java.lang.Error: Unresolved compilation problems:
The method add(Rectangle) in the type Region is not applicable for the
arguments (int[])
The method subtract(int[]) is undefined for the type Region
The method subtract(int[]) is undefined for the type Region
The method setRegion(Region) is undefined for the type Shell

at Main.main(Main.java:41)
Exception in thread "main"

Stefan Matthias Aust

unread,
May 14, 2004, 8:10:18 AM5/14/04
to
Jan Kassens wrote:

> Da das Snippet ja von Eclipse.org kommt wundere ich mich, dass das
> Snippet bei mir (ich verwende eclipse 2.1 auf WinXP) nicht funtioniert.

Steht da nicht (oder hätte ich sagen sollen) dass das nur mit einem
relativ neuen 3.0-Build geht? Nimm man das SWT von 3M8 oder neuer.

T.Brummund

unread,
May 14, 2004, 9:15:50 AM5/14/04
to

Thx, funzt so wie ich das will, endlich *g* Entweder war die Funktion so schwer,
so unnötig oder Sun spart extra Funktionen auf, um bei neueren Java-Versionen
auch was zu haben, was neu ist ;) Spätestens bei Java 1.2 hätte ich das nämlich
erwartet.

Gruß,
Tobias

Manuel Hermann

unread,
May 14, 2004, 8:22:14 AM5/14/04
to

Ich hätte noch Folgendes zu bieten:
http://developer.apple.com/documentation/Java/Reference/1.4.2/appledoc/api/com/apple/eawt/Application.html#getMouseLocationOnScreen()

Ich fürchte das wird ihm trotzdem nicht ro richtig helfen. :)

Gruß
Manuel

0 new messages