Bonjour,

Soit le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
    // Affiche des images sur la moitié droite de l'écran
    private AnchorPane GetPaneDroite() {
        Dimension sizeScreen = oUtil.GetDimScreen(); // Obtient les dimensions de l'écran
        double dHeightScreen = sizeScreen.getHeight();
        double dWidthScreen = sizeScreen.getWidth() / 2;
        Image imgParag01 = getInitParag(CST_PATH_P01);
        ImageView oP01 = new ImageView(imgParag01);
        oP01.setFitHeight(dHeightScreen);
        oP01.setFitWidth(dWidthScreen);
        AnchorPane oPane = new AnchorPane();
        oPane.getChildren().add(oP01);
        return oPane;
    }
 
 
    // Lit le répertoire passé en paramètre et retourne un paragraphe d'une traduction aléatoire
    private Image getInitParag(String pathParag) {
        File[] lstParag = oUtil.ReadDirectory(CST_PATH_JPG, pathParag);
        int iAlea = oUtil.GetRandom(lstParag.length);
        Image oneParag = oUtil.LoadImageJPG(lstParag[iAlea]);
        return oneParag;
    }
Lorsqu'il est exécuté sur le Theard principal, il marche et l'image s'affiche correctement. Cependant, comme mon but est d'afficher plusieurs images, j'aimerais le faire s'exécuter sur un Theard secondaire. J'ai donc écrit ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
    try {
            final Service<AnchorPane> InitServPaneDroite;
            InitServPaneDroite = new Service<AnchorPane>() {
 
                @Override
                protected Task<AnchorPane> createTask() {
                    return new Task<AnchorPane>() {
                        @Override
                        protected AnchorPane call() throws Exception {
       Dimension sizeScreen = oUtil.GetDimScreen(); // Obtient les dimensions de l'écran
        double dHeightScreen = sizeScreen.getHeight();
        double dWidthScreen = sizeScreen.getWidth() / 2;
        Image imgParag01 = getInitParag(CST_PATH_P01);
        ImageView oP01 = new ImageView(imgParag01);
        oP01.setFitHeight(dHeightScreen);
        oP01.setFitWidth(dWidthScreen);
        AnchorPane oPane = new AnchorPane();
        oPane.getChildren().add(oP01);
        return oPane;                        }
                    };
                }
            };
            InitServPaneDroite.stateProperty().addListener(new ChangeListener<Worker.State>() {
                @Override
                public void changed(ObservableValue<? extends Worker.State> observableValue, Worker.State oldValue, Worker.State newValue) {
                    if (newValue == Worker.State.SUCCEEDED) {
                        oPaneDroite = InitServPaneDroite.getValue();
                    }
                }
            });
            InitServPaneDroite.start();
            return oPaneDroite;
        } catch (Exception e) {
            MessageAlert oMsg = new MessageAlert();
            StringBuilder oMsgTxt = new StringBuilder(e.getLocalizedMessage());
            oMsg.MessageShow(CST_MSG_ERR, oMsgTxt);
            return null;
}
Et cela ne marche plus. Savez-vous m'expliquer pourquoi un objet créé dans un Theard secondaire n'est pas "capter" dans le Theard principal? Je suppose que c'est un problème courant. Il y a-t-il une méthode particulière pour y remédier?

Merci de vos explications