JavaFX setCursor立即显示

时间:2012-04-13 21:50:54

标签: javafx-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);
            }
        });
 }

}

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

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

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

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