Wgrywanie zdjacie przy pomocy petli do imageView w JavaFx

0

Cześć,

Chce załadować jedno zdjęcie do dziewięciu komponentów imageView(później chce wgrywać wycięte kwadraty o gotowych rozmiarach i wstawiać z tablicy typu Image do elemntow ImageView), obiekty dodaja sie do listy, ale z jakiegoś powodu, nie chca się wyświetlić.

Dodatkowe info:
-każdy iv ma swoje ID, iv1 , iv2 iv3..itd. w pliku fxml

Nie ma tu nic nadzwyczajnego co dziwniejsze, gdy dodam na siłę 9 elementów iv1..9 (kod jest za komentowany) to działa:/

Ponizej daje zdjecie, jak wygląda okienko..

!screenshot-20190625135917.png

package showScore;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class controller {
    int i = 0;
    @FXML
    Label headerLabel;

    @FXML
    ImageView iv1 = new ImageView();
    ImageView iv2 = new ImageView();
    ImageView iv3 = new ImageView();
    ImageView iv4 = new ImageView();
    ImageView iv5 = new ImageView();
    ImageView iv6 = new ImageView();
    ImageView iv7 = new ImageView();
    ImageView iv8 = new ImageView();
    ImageView iv9 = new ImageView();

    //zaladuj obraz do wszystkich image viewv

    ImageView[] imageViewsArr = {iv1, iv2, iv3, iv4, iv5, iv6, iv7, iv8, iv9};
    public Image[] imageArray = new Image[9];
    private Map<Integer, ImageView> orginalImage = new HashMap<>();

    File imagaeFIle = new File("fiddle.jpg");
    Image image = new Image(imagaeFIle.toURI().toString());


    private void fillImageView() {
        System.out.println("tu");
        for (int j = 0; j < imageViewsArr.length; j++) {
            imageViewsArr[j].setImage(image);
            System.out.println(i++);
            System.out.println(imageViewsArr[j]);
        }
//        iv1.setImage(image);
//        iv2.setImage(image);
//        iv3.setImage(image);
//        iv4.setImage(image);
//        iv5.setImage(image);
//        iv6.setImage(image);
//        iv7.setImage(image);
//        iv8.setImage(image);
//        iv9.setImage(image);

    }

    @FXML
    public void initialize() {
        System.out.println("xxx");
        headerLabel.setText("Let's play a game ;)");
        fillImageView();

    }


}

Co robię nie tak ..?

0

Wydaje mi się że ten kawałek jest zrypany:

    @FXML
    ImageView iv1 = new ImageView();
    ImageView iv2 = new ImageView();
    ImageView iv3 = new ImageView();
    ImageView iv4 = new ImageView();
    ImageView iv5 = new ImageView();
    ImageView iv6 = new ImageView();
    ImageView iv7 = new ImageView();
    ImageView iv8 = new ImageView();
    ImageView iv9 = new ImageView();

Jak w FXML'u masz ponazywane obiekty ImageView to nie używasz new w kontrolerze bo one się magicznie same tworzą / przypisują na bazie FXML'a. Dwa, wydaje mi się że adnotacja @FXML powinna być z osobna na każdym polu i nie działa ona grupowo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1