JavaFX - есть ли способ напечатать одно изображение несколько раз, используя imageview?

Учитывая код ниже, я пытаюсь распечатать одно изображение (хранится в переменной 'изображение') несколько раз. Какие-нибудь предложения относительно того, как я буду делать это? Любая информация будет полезна.

    Image image = new Image("tileset.png");
    ImageView tileset = new ImageView();
    tileset.setImage(image);

    Rectangle2D viewport1 = new Rectangle2D(0,16,16,16); //(selected pixels)
    tileset.setViewport(viewport1);
    int length = 40, width= 40;  // declare size of array (print 40x40)

    // loop through grid, fill every tile with image 'image'. 
    // currently only fills position (40,40) with the image. 
    for(int y = 0; y < length; y++)
    {
        for(int x = 0; x < width; x++)
        {
            GridPane.setConstraints(tileset,x,y);
        }
    }


    root.getChildren().add(tileset);

1 ответ

Решение

Метод GridPane.setConstraints(tileset,x,y) не добавляет дочерний элемент в gridpane, он просто устанавливает индексы дочернего узла. Чтобы добавить его в сетку, вы должны позвонить root.getChildren().add(tileset) каждый раз в цикле с новым ImageView,

Image image = new Image("tileset.png");

Rectangle2D viewport1 = new Rectangle2D(0,16,16,16); //(selected pixels)
int length = 40, width= 40;  // declare size of array (print 40x40)

// loop through grid, fill every tile with image 'image'. 
// currently only fills position (40,40) with the image. 
for(int y = 0; y < length; y++)
{
    for(int x = 0; x < width; x++)
    {
        ImageView tileset = new ImageView(image);
        tileset.setViewport(viewport1);

        GridPane.setConstraints(tileset,x,y);
        root.getChildren().add(tileset);
    }
}
Другие вопросы по тегам