2016-11-28 76 views
1

我希望能夠通過將changelistener附加到整數 (mouse.x)來實現此目的。但getPointerInfo()。getLocation();一旦初始化。之後,該位置不更新。我怎樣才能讓這些changelisteners在價值的變化上工作?如何使用changelistener監視鼠標位置x y的更改?

也許有一個更好的方法來做到這一點。任何幫助表示讚賞。

public class TheMidiApp extends Application { 

@Override 
public void start(Stage stage) throws Exception { 
Point mouse = java.awt.MouseInfo.getPointerInfo().getLocation();    
System.out.println("MouseX " + mouse.x); 
System.out.println("MouseY " + mouse.y); 

//Changelistener X 
IntegerProperty changeValueMouseX = new SimpleIntegerProperty(mouse.x); 
changeValueMouseX.addListener(new ChangeListener<Number>(){ 
    @Override 
    public void changed(ObservableValue <? extends Number> observableValue, Number oldValue, Number newValue){ 
     System.out.println("OLD MOUSE X VALUE: " + oldValue); 
     System.out.println("NEW MOUSE X VALUE: " + newValue); 
    } 
}); 

//Changelistener Y      
IntegerProperty changeValueMouseY = new SimpleIntegerProperty(mouse.y); 
changeValueMouseX.addListener(new ChangeListener<Number>(){ 
    @Override 
    public void changed(ObservableValue <? extends Number> observableValue, Number oldValue, Number newValue){ 
     System.out.println("OLD MOUSE Y VALUE: " + oldValue); 
     System.out.println("NEW MOUSE Y VALUE: " + newValue); 
    } 
}); 

MouseX = mouse.x; 
MouseY = mouse.y; 
+0

您需要在根節點上有一個偵聽器。我會在根節點上嘗試onMouseMoved。 – Sedrick

回答

0

您需要在根節點上有一個偵聽器。

public class JavaFXApplication29 extends Application { 

    @Override 
    public void start(Stage primaryStage) { 


     AnchorPane root = new AnchorPane(); 
     Scene scene = new Scene(root, 500, 500); 

     root.setOnMouseMoved(new EventHandler<MouseEvent>(){ 
      @Override 
      public void handle(MouseEvent event) { 
       System.out.println("mouse X: " + event.getX()); 
       System.out.println("mouse Y: " + event.getY()); 
      } 
     });  

     primaryStage.setTitle("Hello World!"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 
+0

這將是一個好的開始,但是我需要知道應用程序之外的位置(Java),因爲鼠標可以在其他屏幕上。我有一個主屏幕和一個觸摸屏。該應用在觸摸屏上運行。 Iam使用它將鼠標傳回原來的位置。傳送鼠標位置的作用,只有它每次都回到相同的位置。這就是爲什麼我想跟蹤並更新主屏幕的舊鼠標位置。 – Bram

+0

http://stackoverflow.com/questions/2469515/java-mouse-motion-anywhere-on-screen這個問題的答案可能會有所幫助。 – Sedrick

相關問題