Bonjour,
je suis en train de programmer un TreeView pour lister les voix de synthèses vocales présentes sur le système d'exécution.
Ma fenêtre ressemble à ça pour le moment :
Le problème que j'ai, c'est que je voudrais avoir les checkbox que sur les leafs de chaque arbres.
Par exemple sur "Microsoft Zira Desktop...", "Microsoft David Desktop...", "Microsoft Hortense Desktop, SAPI5, Microsoft", etc.
J'ai beau chercher, je ne trouve pas la solution...
Voici mon code:
En espérant qu'une solution existe...
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
40
41
42
43
44
45 /** * Retrieving available voices on the system, * and populating the TreeView */ private void LoadTTSVoiceTree() { TreeItem<String> rootItem = new TreeItem<String>("Moteurs de synthèse vocale disponibles"); rootItem.setExpanded(true); EngineList list = Central.availableSynthesizers(null); for(int i = 0; i<list.size(); i++) { EngineModeDesc engineDesc = (EngineModeDesc) list.get(i); String engineName = engineDesc.getEngineName(); String engineMode = engineDesc.getModeName(); Locale engineLocale = engineDesc.getLocale(); TreeItem<String> engineItem = new TreeItem<String>(engineName +" - "+ engineMode +" - "+ engineLocale.getDisplayLanguage().toUpperCase()); rootItem.getChildren().add(engineItem); engineItem.setExpanded(true); //System.out.println(engineName + " - " + engineLocale); SynthesizerModeDesc desc = (SynthesizerModeDesc)list.get(i); try { Synthesizer synth = Central.createSynthesizer(desc); synth.allocate(); synth.resume(); synth.waitEngineState(Synthesizer.ALLOCATED); desc = (SynthesizerModeDesc)synth.getEngineModeDesc(); Voice[] vs = desc.getVoices(); for(Voice v: vs) { //System.out.println("Found voice \""+vs[j].getName()+"\""); String voiceName = v.getName(); CheckBoxTreeItem<String> voiceItem = new CheckBoxTreeItem<String>(voiceName); engineItem.getChildren().add(voiceItem); } synth.deallocate(); synth.waitEngineState(Synthesizer.DEALLOCATED); } catch(Exception e) { e.printStackTrace(); } } ttsVoiceTree.setRoot(rootItem); ttsVoiceTree.setCellFactory(CheckBoxTreeCell.<String>forTreeView()); }
Merci de vos bon conseils !
Partager