Java FX Как правильно добавить несколько изображений и затем изменить положение этих изображений с помощью мыши - PullRequest
0 голосов
/ 14 января 2019

Я новичок в JavaFX и объектном программировании, поэтому мне нужна помощь. Давайте предположим, что у меня есть файлы FXML с именами FXML1 и FXML2 и два контроллера для каждого из них, называемые FXML1_Controller и FXML2_Controller. В FXML1 у меня есть несколько Combobox с целочисленными значениями и одна кнопка. Я хотел бы добавить с помощью этой кнопки несколько изображений в FXML2, например если значение Combobox1 равно 2, поэтому я хочу добавить два ImageView1 в представлении FXML2, если значение Combobox2 равно 1, я бы хотел добавить один ImageView2 в представление FXML2 и т. д. Затем я хотел бы иметь возможность изменить положение (X, Y координаты) этого ImageView с помощью перетаскивания мышью и возможность установить эти X и Y в переменные, потому что я должен экспортировать их в XML-файл.

Я застрял, когда хотел переместить ImageView. Я добавил ImageViews в FXML2 с помощью кнопки из FXML1. Это работает, я могу видеть их в FXML2, но я не знаю, как ссылаться на них сейчас. Я знаю, что мое мышление и код могут быть неправильными, но я их вставляю.

Я создал новую группу для ImageViews, я сделал цикл создания ImageViews по циклу 'for' и добавил их в группу. Затем я использовал FXMLLoader для загрузки FXML2.fxml и добавил детей в опорную панель FXML2. Все эти фрагменты кода находятся в MouseEvent кнопки в FXML1.

//Creating group

Group ImageView1_group = new Group();

//Loop

 for (int i=0; i<ImageView1_amount;i++){

        ImageView ImageView1 = new ImageView("ImageView1.svg");
        ImageView1.setId("ImageView1_"+i);
        ImageView1.setY(MainPaneHeight/2);
        ImageView1.setX(MainPaneWidth/2);
        ImageView1_group.getChildren().add(ImageView1);
    }

//
FXMLLoader Loader = new FXMLLoader();

Loader.setLocation(getClass().getResource("FXML2"));
        try {
            anchorpane.getChildren().clear();
            Pane newLoadedPane = Loader.load();
            anchorpane.getChildren().addAll(ImageView1_group);
        } catch (IOException e) {
            e.printStackTrace();
        }

Я добавил картинку, которая показывает, что я хотел бы получить. Все добавленные элементы должны быть в состоянии перемещаться с помощью мыши. Спасибо за любой совет. https://imgur.com/yOaZDHI.jpg

...