Bonjour,

c'est mon premier post sur ce forum, même si ça fait un moment que j'utilise ce site. J'ai cherché un peu sur les posts mais j'ai rien trouvé qui corresponde à mon problème.

J'ai créé un JTabbedPane avec plusieurs onglets, et j'ai modifié le LookAndFeel uniquement des onglets avec un SynthLookAndFeel et en utilisant des images pour les onglets (images toute simples). Dans chaque onglet j'ai une liste de vignettes placées horizontalement qui peuvent dépasser de la fenêtre donc qui sont placées dans un JScrollPane.
Tout ceci fonctionne correctement, le problème est que lorsque j'utilise le LookAndFeel, lorsque la souris passe sur les onglets, le ScrollPane placé dans les onglets se repaint ou refait un layout, donc clignote. Ce qui est bizarre c'est que ça le fait à chaque déplacement de la souris, donc ça clignote beaucoup, je ne comprend pas pourquoi il refait un layout. Surtout que cela ne le fait pas sans le LookAndFeel.
C'est la première fois que j'utilise le SunthLookAndFeel donc je ne maitrise pas vraiment.


Voici le look And feel :

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
 
<synth>
	<!-- The style for the tabbed pane component. -->
	<style id="Tabbed Pane">
		<property key="TabbedPane.textIconGap" type="integer" value="2"/>
	</style>
	<bind style="Tabbed Pane" type="region" key="TabbedPane" />
 
	<!-- The style for the tabbed pane content. -->
	<style id="Tabbed Pane Content">
	</style>
	<bind style="Tabbed Pane Content" type="region" key="TabbedPaneContent" />
 
	<!-- The style for the tabs of tabbed pane. -->
	<style id="Tabbed Pane Tab">
		<font name="Sans" size="10"/>
		<insets top="2" left="5" bottom="2" right="5"/>
		<state value="ENABLED">
			<imagePainter method="tabbedPaneTabBackground" path="laf/tab_idle.png" sourceInsets="5 6 0 6" paintCenter="true" stretch="true" center="false"/>
		</state>
		<state value="DISABLED">
			<imagePainter method="tabbedPaneTabBackground" path="laf/tab_idle.png" sourceInsets="5 6 0 6" paintCenter="true" stretch="true" center="false"/>
		</state>
		<state value="SELECTED">
			<color type="TEXT_FOREGROUND" value="#FAFAFA"/>
			<imagePainter method="tabbedPaneTabBackground" path="laf/tab_selected.png" sourceInsets="5 6 0 6" paintCenter="true" stretch="true" center="false"/>
		</state>
	</style>
	<bind style="Tabbed Pane Tab" type="region" key="TabbedPaneTab" />
 
	<!-- The style for the tab area of tabbed pane. -->
	<style id="Tabbed Pane Tab Area">
		<insets top="3" left="0" bottom="0" right="0"/>
	</style>
	<bind style="Tabbed Pane Tab Area" type="region" key="TabbedPaneTabArea" />
</synth>
J'applique le lookAndFeel comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
ComponentUI ui = SynthLookAndFeel.createUI(tabbedPane);
		tabbedPane.setUI((TabbedPaneUI)ui);
Je le charge préalablement, d'ailleur je n'ai pas trouvé de méthode qui fonctionne bien (c'est un autre problème)

j'ai essayé de l'ajouter en auxiliaryLookAndFeel mais si je fais ça il ne prend pas le LAF par défaut pour le reste des composants, donc ça plante au chargement, je suis obligé de le supprimer après l'avoir ajouté, pourtant ça fonctionne il le prend bien en compte après :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
_laf = new SynthLookAndFeel();
_laf.load(url);
 
UIManager.addAuxiliaryLookAndFeel(_laf);
// ici je suis obligé de le supprimer mais ça fonctionne même si je l'utilise après
UIManager.removeAuxiliaryLookAndFeel(_laf);
...
Le but étant de pouvoir appliquer un LAF juste pour des onglets sans avoir à refaire un LAF complet, ni recoder une TabbedPaneUI complète juste pour ça.

Merci par avance