我正嘗試構建一個javafx應用程序,在該應用程序中我需要響應鼠標移動並將它們點擊在一起,就像在拍攝時發生在反擊中一樣。但問題是當我按下鼠標按鈕時,它不會響應鼠標移動,直到我釋放鼠標按鈕。我希望他們兩個並行工作。我試圖在不同的線程中設置我的聽衆,但它不起作用。這是一個槍指針的圖像。處理鼠標移動並在javafx中一起點擊
Image image = new Image("/pointer.png"); // a 25*25 PNG icon
ImageView imageView = new ImageView(image);
scene.setCursor(Cursor.NONE);
然後:
scene.setOnMouseMoved(e -> {
imageView.setX(e.getX());
imageView.setY(e.getY());
});
scene.setOnMousePressed(e -> Toolkit.getDefaultToolkit().beep());
我也試圖把它們放在單獨的線程,它不工作,要麼,但如果它確實存在的另一個問題是,我不能改變一個JavaFX的座標在另一個線程組件和我得到這個錯誤 - 即使它不會導致一個錯誤,它不會工作:
java.lang.IllegalStateException: Not on FX application thread
scene.setOnMouseMoved(e -> {
Thread thread = new Thread() {
@Override
public void run() {
imageView.setX(e.getX()); // here i cannot do stuff related
imageView.setY(e.getY()); // to javafx components
}
};
thread.start();
});
scene.setOnMousePressed(e -> {
Thread thread = new Thread() {
@Override
public void run() {
Toolkit.getDefaultToolkit().beep());
}
};
thread.start();
});
我也試過,但它不工作,要麼
scene.setOnMouseMoved(e -> {
imageView.setX(e.getX());
imageView.setY(e.getY());
scene.setOnMousePressed(event -> Toolkit.getDefaultToolkit().beep());
});
所以,我如何處理這個問題,我如何能夠響應鼠標點擊並行與鼠標移動沒有衝突。