Hallo,
ich brauche mal wieder eure kompentente Hilfe.
Folgende Situation: ich habe zwei Mauszeiger, erstens einmal den von Java/Ubuntu 12 (Host), zweitens den Zeiger eines im Canvas-Element angezeigten, emulierten Betriebssystems (Gast). Ich möchte jetzt den Host-Zeiger bewegen, OHNE den Gast-Zeiger zu bewegen.
VncCanvas extends Canvas, implements MouseListener, MouseMotionListener. Aus der Klasse stammen die folgenden Methoden.
Idee:
Es wird also eine Variable gesetzt, die verhindert, dass die Eingaben verarbeitet werden. Eigentlich sollte die Sache damit gegessen sein. Doch es ist so, dass die Mausbewegung nun nach Ende der Sleep-Zeiit durchgegeben wird. Ich kann mir das absolut nicht erklären. Vor Ablauf der Sleep-Zeit ist alles perfekt, beide Mauszeiger sind da wo sie sein sollen. Danach springt der Gastzeiger, das will ich absolut vermeiden. Die beiden Bewegungen müssen unabhängig sein. Werden die Mausbewegungen gepuffert? Wie könnte man den Puffer leeren / löschen?
ich brauche mal wieder eure kompentente Hilfe.
Folgende Situation: ich habe zwei Mauszeiger, erstens einmal den von Java/Ubuntu 12 (Host), zweitens den Zeiger eines im Canvas-Element angezeigten, emulierten Betriebssystems (Gast). Ich möchte jetzt den Host-Zeiger bewegen, OHNE den Gast-Zeiger zu bewegen.
VncCanvas extends Canvas, implements MouseListener, MouseMotionListener. Aus der Klasse stammen die folgenden Methoden.
Idee:
Java:
public void mouseMoved(MouseEvent evt) {
if (!inputBlocked){
processLocalMouseEvent(evt, true);
last = evt;
}
}
private void hostPointerMove(int x, int y){
setInputBlock(true);
System.out.println("HostPointerMove: "+x+ ", "+y);
try{
Robot robot = new Robot();
robot.mouseMove(x, y);
}
catch(Exception e){
e.printStackTrace();
}
sleep(2000);
setInputBlock(false);
}
public void setInputBlock(boolean v) {
inputBlocked = v;
}
private void sleep(int time){
try {
Thread.sleep(time);
} catch (Exception e) {
e.printStackTrace();
}
}
Es wird also eine Variable gesetzt, die verhindert, dass die Eingaben verarbeitet werden. Eigentlich sollte die Sache damit gegessen sein. Doch es ist so, dass die Mausbewegung nun nach Ende der Sleep-Zeiit durchgegeben wird. Ich kann mir das absolut nicht erklären. Vor Ablauf der Sleep-Zeit ist alles perfekt, beide Mauszeiger sind da wo sie sein sollen. Danach springt der Gastzeiger, das will ich absolut vermeiden. Die beiden Bewegungen müssen unabhängig sein. Werden die Mausbewegungen gepuffert? Wie könnte man den Puffer leeren / löschen?