Bonjour,
J'ai un soucis avec la customisation de JComboBox via le fichier xml. Pour les labels et autres ça se passent bien mais pour les ComboBox ça coincent pour les sous-éléments (arrowButton et ListRenderer).
J'ai fait un premier modèle de JComboBox et je veux maintenant faire un dérivé avec d'autres couleurs.
Je n'arrive pas à trouver quoi mettre dans le paramètre "key" de la balise <bind> pour relier le deuxième style au ComboBox.
Exemple qui ne fonctionne pas : <bind style="ComboBox List Renderer Or" type="name" key="ComboBoxOr.listRenderer" />
Merci pour votre aide.
Guillaume "Mekakurg" Genaudeau
voici un exemple.
et le fichier synth.xml
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 /** * Créé le 28 févr. 2011 par Guillaume "Mekakurg" Genaudeau */ package swing; import java.text.ParseException; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.plaf.synth.SynthLookAndFeel; /** * TestFrame.java */ public class TestFrame extends JFrame{ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { TestFrame thisClass = new TestFrame(); thisClass.setVisible(true); } }); } public TestFrame() { super(); SynthLookAndFeel lookAndFeel = new SynthLookAndFeel(); try { lookAndFeel.load(MainWindows.class.getResourceAsStream("synthTest.xml"), MainWindows.class); } catch (ParseException e) { e.printStackTrace(); } try { UIManager.setLookAndFeel(lookAndFeel); } catch (UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } setSize(300, 200); JPanel jContentPane = new JPanel(); jContentPane.setLayout(null); this.setContentPane( jContentPane); String[] li= {"toto","tat","har","retret","jfgdkllklfdjkgfdlk","ree","gfdgfd","fdg","sdfggf"}; JComboBox listeFiltre = new JComboBox(li); listeFiltre.setBounds(25, 50, 145, 20); jContentPane.add(listeFiltre); JComboBox listeFiltreOr = new JComboBox(li); listeFiltreOr.setBounds(180, 50, 145, 20); listeFiltreOr.setName("ComboBoxOr.1"); jContentPane.add(listeFiltreOr); setLocationRelativeTo(null); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 <ui> <!-- ================================= --> <!-- COMBO Box. --> <!-- ================================= --> <style id="Combo Box"> <property key="ComboBox.rendererUseListColors" type="boolean" value="false"/> <opaque value="true" /> <state value="ENABLED" > <color value="#31707d" type="BACKGROUND" /> <insets top="1" left="5" bottom="0" right="0"/> <color value="WHITE" type="FOREGROUND" /> <color value="WHITE" type="TEXT_FOREGROUND" /> </state> </style> <bind style="Combo Box" type="region" key="ComboBox" /> <bind style="Combo Box" type="name" key="ComboBox.list" /> <!-- ================================= --> <!-- COMBO Box.OR --> <!-- ================================= --> <style id="Combo Box Or"> <property key="ComboBox.rendererUseListColors" type="boolean" value="false"/> <opaque value="true" /> <state value="ENABLED" > <color value="YELLOW" type="BACKGROUND" /> <insets top="1" left="5" bottom="0" right="0"/> <color value="WHITE" type="FOREGROUND" /> <color value="WHITE" type="TEXT_FOREGROUND" /> </state> </style> <bind style="Combo Box Or" type="name" key="ComboBoxOr.*" /> <!-- ================================= --> <!-- LIST RENDERER COMBO BOX --> <!-- ================================= --> <style id="ComboBox List Renderer"> <opaque value="true" /> <insets top="0" left="10" bottom="0" right="0" /> <state value="ENABLED">> <color value="BLACK" type="BACKGROUND" /> <color value="#49aec0" type="TEXT_FOREGROUND" /> <color value="#49aec0" type="FOREGROUND" /> </state> <state value="SELECTED"> <color value="WHITE" type="TEXT_FOREGROUND" /> <color value="#49aec0" type="BACKGROUND" /> </state> </style> <bind style="ComboBox List Renderer" type="name" key="ComboBox.listRenderer" /> <!-- ================================= --> <!-- LIST RENDERER COMBO BOX OR--> <!-- ================================= --> <style id="ComboBox List Renderer Or"> <opaque value="true" /> <insets top="0" left="10" bottom="0" right="0" /> <state value="ENABLED">> <color value="BLACK" type="BACKGROUND" /> <color value="YELLOW" type="TEXT_FOREGROUND" /> <color value="YELLOW" type="FOREGROUND" /> </state> <state value="SELECTED"> <color value="WHITE" type="TEXT_FOREGROUND" /> <color value="YELLOW" type="BACKGROUND" /> </state> </style> <bind style="ComboBox List Renderer Or" type="name" key="ComboBoxOr.listRenderer" /> <!-- ================================= --> <!-- LIST COMBO BOX --> <!-- ================================= --> <style id="ComboBox List"> <opaque value="false" /> <insets top="0" left="10" bottom="0" right="0" /> <state value="ENABLED">> <color value="BLACK" type="BACKGROUND" /> <insets top="4" left="4" bottom="4" right="4"/> <color value="#49aec0" type="TEXT_FOREGROUND" /> <color value="#49aec0" type="FOREGROUND" /> </state> </style> <bind style="ComboBox List" type="name" key="ComboBox.list" /> </ui>
Partager