Bonjour,
Soit le code suivant:
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 // 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; }
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?
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; }
Merci de vos explications
Partager