親ウィンドウから独立しており、システムのタイトル バーを持たない、ドラッグ可能なポップアップ コントロールを作成したいと考えています。
ノード上のマウスイベントに基づいて装飾されていないステージを移動するために、ドラッグ可能なパネルの JavaFx の例を書き直そうとしました。以下のコードを参照してください。残念ながら、これは正しく動作していないようです。複数の画面で、スムーズではなく、不規則に画面を飛び回ります。他の人も同様の方法を使用していると読みましたが、これが現在これを行う唯一の方法ですか、それとも誰かが良い解決策を見つけましたか? ありがとう、
private Node makeDraggable(final Node node) {
final DragContext dragContext = new DragContext();
final Node wrapGroup = node;
wrapGroup.addEventFilter(
MouseEvent.MOUSE_PRESSED,
new EventHandler<MouseEvent>() {
public void handle(final MouseEvent mouseEvent) {
dragContext.mouseAnchorX = mouseEvent.getX();
dragContext.mouseAnchorY = mouseEvent.getY();
dragContext.initialTranslateX =
stage.getX();
dragContext.initialTranslateY =
stage.getY();
}
});
wrapGroup.addEventFilter(
MouseEvent.MOUSE_DRAGGED,
new EventHandler<MouseEvent>() {
public void handle(final MouseEvent mouseEvent) {
stage.setX(
dragContext.initialTranslateX
+ mouseEvent.getX()
- dragContext.mouseAnchorX);
stage.setY(
dragContext.initialTranslateY
+ mouseEvent.getY()
- dragContext.mouseAnchorY);
dragContext.initialTranslateX =
stage.getX();
dragContext.initialTranslateY =
stage.getY();
}
});
return node;
}