2016-11-28 7 views
1

(mouse.x) 정수에 첨부 된 changelistener로이 작업을 수행하고 싶습니다. 그러나 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)를 알아야합니다. 나는 메인 스크린과 터치 스크린을 가지고있다. 앱이 터치 스크린에서 실행됩니다. 이 마우스를 사용하여 내 마우스를 원래 위치로 되돌릴 수 있습니다. 마우스 위치의 순간 이동은 작동 할 때마다 매번 같은 위치로 돌아갑니다. 그래서 메인 화면의 이전 마우스 위치를 추적하고 업데이트하고 싶습니다. – Bram

+0

http://stackoverflow.com/questions/2469515/java-mouse-motion-anywhere-on-screen이 질문에 대한 답이 도움이 될 수 있습니다. – Sedrick