簡體   English   中英

在JavaFX中的窗格中移動絕對定位的節點的最佳方法是什么?

[英]What is the optimal way to move absolute positioned Node in Pane in JavaFX?

我有一個窗格(1440x800)和一個節點(400x300),需要在該窗格內移動。 因此對於Pane,我采用了StackPane;對於Node,我采用了VBox。

這是移動節點的控制器。

public class Controller extends AbstractController {

    /**
     * Mouse pressed X position.
     */
    private double mousePressedX;

    /**
     * Mouse pressed Y position.
     */
    private double mousePressedY;

    /**
     * Insets that were when user pressed mouse.
     */
    private Insets mousePressedInsets;

    /**
     * Mouse pressed handler.
     * @param event
     */
    @FXML
    public void handleTitlePaneMousePressed(final MouseEvent event) {
        Node node = (Node) getView().getFxView();
        mousePressedX = event.getScreenX();
        mousePressedY = event.getScreenY();
        mousePressedInsets = StackPane.getMargin(node);
        if (mousePressedInsets == null) {
            mousePressedInsets = new Insets(0, 0, 0, 0);
        }
    }

    /**
     * Moused dragged handler.
     * @param event
     */
    @FXML
    public void handleTitlePaneMouseDragged(final MouseEvent event) {
        Node node = (Node) getView().getFxView();
        double deltaX = event.getScreenX() - mousePressedX;
        double deltaY = event.getScreenY() - mousePressedY;
        Insets newInsets =
                new Insets(mousePressedInsets.getTop() + deltaY, 0, 0, mousePressedInsets.getLeft() + deltaX);
        StackPane.setMargin(node, newInsets);
    }
}

當用戶單擊該節點的標題時,然后按X和Y保存並在Moused dragged handler 該代碼按我的需要工作。 唯一的問題是鼠標移動和節點模式之間有一點延遲。

我試圖在JVM上添加以下設置

-Djavafx.animation.fullspeed=true
-Dprism.vsync=false

但這並沒有幫助,也許是因為我使用Linux-不知道。

在JavaFX中,還有另一種更優化的方法來移動Pane中的絕對定位Node嗎?

您的代碼一直在與StackPane的布局機制作斗爭。 對於絕對定位節點,應始終直接使用窗格。 在某些情況下,也可以使用AnchorPane。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM