Возможность перемещать недекорированное окно приложения на экране

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

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


person Athanasios Doulgeris    schedule 12.05.2013    source источник
comment
Попробуйте прочитать ответ Павла в заголовке stackoverflow.com/questions/16261465/ и подумайте, сможете ли вы это реализовать, когда узел - корневой макет сцены, а на Жест DnD, который вы используете setX, Y сцены   -  person Alexander Kirov    schedule 12.05.2013
comment
Какой у Вас вопрос? Может быть, это Как сделать неукрашенное окно подвижным/перетаскиваемым в JavaFX?.   -  person pmoule    schedule 12.05.2013
comment
возможный дубликат Как сделать неукрашенное окно подвижным/перетаскиваемым в JavaFX?   -  person jewelsea    schedule 12.05.2013


Ответы (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;
    }
}
person Ploppy    schedule 06.08.2013