2014-12-01 78 views
0

我有一個JavaFX應用程序,它有一個可滾動區域。在該可滾動區域中,可以添加各種類型的可拖動節點。你會認爲,如果你拖拽一個節點到邊緣,它會朝那個方向滾動。但是,它朝相反的方向滾動。JavaFX - 向後拖動節點+ ScrollPane?

拖動作品如:

 myNode.setOnMousePressed(new EventHandler<MouseEvent>(){ 
     @Override 
     public void handle(MouseEvent t){ 
       originalX1 = 200; 
       originalY1 = 200; 
       newX1 = ((WebView)(t.getSource())).getTranslateX(); 
       newY1 = ((WebView)(t.getSource())).getTranslateY(); 

       System.out.println("(" + newX1 + ", " + newY1 + ")"); 
     } 
    }); 
    myNode.setOnMouseDragged(new EventHandler<MouseEvent>(){ 
     @Override 
     public void handle(MouseEvent t){ 
       double offsetX = t.getSceneX() - 210; 
       double offsetY = t.getSceneY() - 220; 
       double newTranslateX = newX + offsetX; 
       double newTranslateY = newY + offsetY; 

       ((NodeType)(t.getSource())).setTranslateX(newTranslateX); 
       ((NodeType)(t.getSource())).setTranslateY(newTranslateY); 

       System.out.println("(" + newTranslateX + ", " + newTranslateY + ")"); 

     } 
    }); 
+0

你有沒有在您拖動或者是web視圖的「滾動」區域滾動窗格? – Kalaschni 2014-12-03 08:41:49

+0

Woops,我打算把它改成NodeType。它是各種不同的節點類型,可在錨窗格內拖動,適合滾動窗格。謝謝你的迴應,我不認爲我會得到任何東西。 @Kalaschni – user2130057 2014-12-04 06:08:30

回答

0

如果你想在一個ScrollPane滾動你應該使用Hvalue和ScrollPane的Vvalue
作爲一種方法,是這樣的:

if (scrollPane.getViewportBounds().getWidth() - t.getSceneX() <= 20) { // Look if the user dragged to the right border 
    // Set the horizontal scroll-bar 3% wider 
    scrollPane.setHvalue(scrollPane.getHvalue() + 0.03); 
} else if (scrollPane.getViewportBounds().getHeight() - t.getSceneY() <= 20) { // Look if the user dragged to the bottom border 
    // Set the vertical scroll-bar 3% wider 
    scrollPane.setVvalue(scrollPane.getVvalue() + 0.03); 
} 
// @TODO Do this for the top and left border too 

編碼快樂,
Kalasch

相關問題