2

我需要在拖动时更改光标,并希望在立即按下鼠标后更改它,所以我这样做:

public class Graph extends Pane{


 void someInit(){

    setOnMousePressed(new EventHandler<MouseEvent>() {

            @Override
            public void handle(MouseEvent e) {
                logger.info("pressed graph x-> " + e.getX() + " |  y->" + e.getY());
                setCursor(Cursor.MOVE);
            }
        });
 }

}

按下鼠标按钮并且不移动任何像素后,光标不会改变。它在最小的鼠标移动后发生变化。如何在不移动鼠标的情况下强制立即显示它。

4

2 回答 2

2

通过 CSS 更改时,光标会立即更新,例如:

.moving {
    -fx-cursor: closed_hand;
}

然后您的代码可能如下所示:

public class Graph extends Pane{
    void someInit() {
        setOnMousePressed(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent e) {
                logger.info("pressed graph x-> " + e.getX() + " |  y->" + e.getY());
                Graph.this.getStyleClass().add("moving");
            }
        });
    }
}

您可以稍后在另一个事件中使用以下方法恢复光标:

getStyleClass().remove("moving");
于 2013-09-26T17:23:02.633 回答
0

这是 JavaFX 中的一个错误,已在 8 中修复。

https://javafx-jira.kenai.com/browse/RT-33412

于 2013-11-20T14:34:50.400 回答