2017-01-23 5 views
1

私は、ユーザーが何かをドラッグしたオブジェクトのインスタンスを持つ必要があります。私はevent.getTarget()を見ていますが、私はまだ実際のオブジェクトを取得することはできません。ここ は、私が今持っているものである:それはFlowPaneない場合ドロップターゲットオブジェクトのインスタンスを取得

scrollPane.setOnDragOver(new EventHandler<DragEvent>() { 

    private Node hoveredNode; 

    @Override 
    public void handle(DragEvent event) { 
     double windowHeight = scrollPane.getHeight(); 
     if(!event.getTarget().getClass().getName().contains("FlowPane")) 
      logger.severe(event.getTarget().getClass().getName() + ""); 
     double topBar = (20*windowHeight)/100; 
     double bottomBar = windowHeight - topBar; 
     event.acceptTransferModes(TransferMode.LINK); 
     if(event.getY() > 0 && event.getY() < topBar && scrollPane.getVvalue() > 0) { 
     scrollPane.setVvalue(scrollPane.getVvalue()-0.001); 
     } 
     else if(event.getY() < windowHeight && event.getY() > bottomBar && scrollPane.getVvalue() < 1){ 
      scrollPane.setVvalue(scrollPane.getVvalue()+0.001); 
     } 
    } 
}); 

は今、私はちょうどターゲットクラス名をログに記録しています。ホバー効果を適用したいので、実際のオブジェクトのインスタンスを持つ必要があります。

私は何か作業を提案できますか?

答えて

1

event.getTarget()またはevent.getSource()を使用しますが、取得するオブジェクトを特定のクラスにキャストする必要があります。その後、それを変更することができます。

参考までに、次のSSCCEを参照してください。

public class JavaFXTest extends Application { 

    @Override 
    public void start(Stage primaryStage) { 
     StackPane root = new StackPane();  

     Text text = new Text("Test"); 
     text.setOnDragDetected((Event event) -> { 
      ((Text)event.getSource()).setStyle("-fx-stroke: red;"); 
      event.consume(); 
     }); 
     root.getChildren().add(text); 

     Scene scene = new Scene(root, 600, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

テキストをドラッグしようとすると、赤色に変わります。

+0

ありがとうございます。今、私は実際のインスタンスを取得することができます。 – Robert

関連する問題