我正在研究需要在窗格上移動節點的應用程序。移動JavaFx8節點的正確方法
我剛剛開始學習javaFx 8,所以我對工作流有了一些瞭解,但是當我設法使可工作的可拖動節點代碼工作時,它使用了node.setTranslateX()和.setTranslateY()。
這一切都很好,直到我試圖使節點捕捉到一個網格,該網格將高度和寬度細分中的場景區域分開。
每當我嘗試使用modulos來獲取某種捕捉進行時,我被卡住的事實是我打電話翻譯轉換。我想自己直接設置節點的座標。我試過node.relocate(x,y)無濟於事。至於node.setX()或node.setY()。這些似乎沒有太大的作用。
所以基本上,我有兩個問題:
- 有直接設置一個節點的座標的方法嗎?如果是,如何?
- 將節點捕捉到網格並用鼠標拖動時正確的方法是什麼?
我當前的代碼使用這些方法來拖動節點:
public class Boat extends ImageView {
private int size ;
private String name ;
private Double dragDeltaX, dragDeltaY;
//Constructor etc here//
this.setOnMousePressed(event -> {
this.setCursor(Cursor.CLOSED_HAND);
dragDeltaX = this.getLayoutX() + event.getX();
dragDeltaY = this.getLayoutY() + event.getY();
});
this.setOnMouseReleased(event -> {
this.setCursor(Cursor.OPEN_HAND);
this.relocate(event.getSceneX(), event.getSceneY());
});
this.setOnMouseDragged(event -> {
this.setTranslateX(event.getSceneX() - dragDeltaX);
this.setTranslateY(event.getSceneY() - dragDeltaY);
});
this.setOnMouseEntered(event -> {
this.setCursor(Cursor.OPEN_HAND);
});
}
在此先感謝您的幫助,
什麼樣的容器('Pane')你把它放進去? – 2014-11-22 17:11:50
@James_D Stackpane – Skwiggs 2014-11-22 21:01:51