滞后于SetMouseMoved javafx

时间:2018-03-26 12:59:00

标签: multithreading javafx concurrency mouseevent

我通过使用十字架显示鼠标的位置来为我的程序创建鼠标跟踪器。但是,当我快速移动鼠标以测试代码性能的完整性时,我经历了滞后 - 十字架落在鼠标后面,直到鼠标停止移动才会赶上。

我猜我需要某种多线程解决方案才能解决这个问题,但我不知道该怎么做,因为我对这个概念还是比较陌生的。任何javafx专家都可以提供一些见解吗?非常感激。

以下是鼠标侦听器的部分代码:

private void setMouseMoved(String [] time) {
    setOnMouseMoved((MouseEvent event) -> {

            double x = event.getX();
            double y = event.getY();

            Platform.runLater(new Runnable() {
                    @Override
                    public void run() {
                        setMoveObjects(time,x,y);
                    }
            });
    });
}

// Set the bounds for the mouse trackpad.
private void setMoveObjects(String[] time, double x, double y) {

    if (x > xORIGIN && x < xEND && y > yORIGIN && y < yEND) {

        setMoveHVlines(x, y);
    }
}

// creating the mouse cross;    
private void setMoveHVlines(double x, double y) {

    HLINE.setStartY(y);
    HLINE.setEndY(y);
    VLINE.setStartX(x);
    VLINE.setEndX(x);

}

0 个答案:

没有答案