2012-04-13 37 views
2

我需要改变拖动光标,希望鼠标立即按下后改变它,所以我不喜欢这样写道:的JavaFX的setCursor立即显示

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); 
      } 
     }); 
} 

} 

按下鼠标左键,不动任何像素之后,光标不会更改。它在最小的鼠标移动后改变。我如何强制在没有鼠标移动的情况下立即显示它。

+1

我遇到了同样的问题。你有没有找到解决方案? – 2013-09-09 08:26:21

回答

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"); 
+0

:在这种情况下,按下的CSS选择器可能也很有用:http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#introlimitations – Travis 2013-09-26 17:36:48