2013-05-12 4 views
1

Я создаю приложение для системы бронирования с использованием JFX и JavaFX создателя сцен. Я подумал, что для того, чтобы он выглядел лучше, я мог удалить границы, или, как код, установить его как «undecorated». Теперь я хотел бы, чтобы его можно было перетащить на экран, щелкнув по сцене и перетащив его. Я пробовал много способов, но никто из них не работал. Теперь я могу воспользоваться некоторой помощью.Возможность перемещения окна «без декодирования» на экране

Заранее спасибо.

+0

Попробуйте прочитать ответ Павла на http://stackoverflow.com/questions/16261465/mousedragged-in-javafx-determine-the-card-node-over- который-another-node-is-dragg и подумайте, если вы можете его реализовать, когда узел - корневая компоновка сцены, а на жесте DnD вы используете setX, Y сцены –

+1

В чем ваш вопрос? Возможно, это [Как сделать незакрепленное окно подвижным/перетаскиваемым в JavaFX?] (Http://stackoverflow.com/a/13460743/852274). – pmoule

+1

Возможный дубликат [Как сделать незакрепленное окно подвижным/перетаскиваемым в JavaFX?] (Http://stackoverflow.com/questions/13206193/how-to-make-an-undecorated-window-movable-dragable-in-javafx) – jewelsea

ответ

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); 
     } 
    }); 
} 

Мышь:

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; 
    } 
} 
Смежные вопросы