2013-05-12 88 views
1

我正在使用JFX和JavaFX場景構建器構建預訂系統應用程序。 我認爲爲了讓它看起來更好,我可以刪除邊框,或者如代碼所示,將其設置爲「未修飾」。現在我想讓它能夠通過點擊場景並拖動它在屏幕上拖動。我嘗試了很多方法,但其中沒有一個真正起作用。 我現在可以使用一些幫助。能夠在屏幕上移動「未修飾」的應用程序窗口

預先感謝您。

+0

嘗試讀取帕維爾的回答上http://stackoverflow.com/questions/16261465/mousedragged-in-javafx-determine-the-card-node-over-這是另一個節點是dragg,並認爲,如果你可以實現它,當節點 - 場景的根佈局,並在DnD手勢你使用setX,場景的Y – 2013-05-12 12:48:31

+1

你的問題是什麼?也許,這是[如何使一個未裝飾的窗口在JavaFX中移動/拖動?](http://stackoverflow.com/a/13460743/852274)。 – pmoule 2013-05-12 13:17:13

+1

[如何在JavaFX中創建未裝飾的窗口可移動/可拖動?](http://stackoverflow.com/questions/13206193/how-to-make-an-undecorated-window-movable-dragable-in-javafx ) – jewelsea 2013-05-12 15:20:21

回答

1

我正在使用場景生成器,這是我發現的。
使用背景窗格移動未修飾的窗口。

@FXML 
private Pane pane; 

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    pane.setOnMousePressed(new EventHandler<MouseEvent>() { 

     @Override 
     public void handle(MouseEvent t) { 
      //System.out.println("Pressed"); 
      //System.out.println("Mouse : " + t.getX() + " | " + t.getY()); 
      mouse.setX(t.getX()); 
      mouse.setY(t.getY()); 
     } 
    }); 
    pane.setOnMouseDragged(new EventHandler<MouseEvent>() { 

     @Override 
     public void handle(MouseEvent t) { 
      //System.out.println("Dragged"); 
      //System.out.println("Mouse : " + t.getX() + " | " + t.getY()); 
      pane.getScene().getWindow().setX(t.getScreenX() - mouse.getX() - 14); 
      pane.getScene().getWindow().setY(t.getScreenY() - mouse.getY() - 14); 
     } 
    }); 
} 

Mouse類:

public class Mouse { 
    private double x = 0; 
    private double y = 0; 

    public double getX() { 
     return x; 
    } 

    public void setX(double x) { 
     this.x = x; 
    } 

    public double getY() { 
     return y; 
    } 

    public void setY(double y) { 
     this.y = y; 
    } 
} 
相關問題