JSplitpane... mouvement lors d'un changement de composant

Signaler
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
-
 DrakeRoxas -
Bonjour

ici pas vraiment de probleme technique... je sus juste en quete de faire qq chose de plus propre

j'ai un JSplitPane contenant 2 objet
lorsque je change celui de droite, le divider se déplace...
je me dépeche donc de le remettre en place mais a l'affichage ce n'est pas tres jolicar on voit les fenteres bouger une fraction de seconde.

j'aimerais pouvoir geler l'affichage, faire mes modif et relancer le rafraichissement de l'affichage.

pour l'intant ce que j'ai trouvé de moins moche est de masquer le splitpane changer de composant et reafficher... ca fait clignoter l'affichage mais on ne voit pas les images se redimenssioner. 

splitPane.setVisible(
false);

splitPane.setRightComponent(Mon nouveau composant
);

splitPane.setDividerLocation(150);

splitPane.setVisible(
true);

6 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
As-tu essayé de désactiver les splitpanes ? (setEnabled = false)
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
1
oui ca n'est pas efficace
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

essais de le passer en double buffer (tonSplit.setDoubleBuffered(true))


setDoubleBuffered
public void setDoubleBuffered(boolean aFlag)

Sets whether the this component should use a buffer to paint.
If set to true, all the drawing from this component will be done
in an offscreen painting buffer. The offscreen painting buffer will
the be copied onto the screen.
Swings painting system always uses a maximum of one double buffer.
If a
Component
is buffered and one of its ancestor
is also buffered, the ancestor buffer will be used.

<dd><dd><dl> * Parameters: : <dd>
aFlag
- if true, set this component to be double buffered
</dd></dl>defois ca aide pour les clignottement

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Messages postés
152
Date d'inscription
mardi 4 mai 2004
Statut
Membre
Dernière intervention
8 octobre 2008
1
ouiiiiii mais non :)

en fait j'ai essayé ca aussi... mais en ce moment le clignitement est du au fait que je cache / affiche le split avec splitPane.setVisible(false/true




); avant et apres mes modifs pour masquer le fait que les fentere se redimentionnent ce qui est tres laid mais qui entraine un cligniottement (forecement c'est moi qui masque le split)

donc la meilleur solution serait de bloquer le redimentionnement auto des fenetres
ou a defaut de figer l'affichage

mais bon c'est juste pour faire plus clean
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

essai fenetre.setResizable(false) avant :P

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
Je viens d'avoir exactement le même problème mais je l'ai résolu :
Tu crée un classe qui hérite du JSplitPane et tu redéifinis la fonction setRightComponent. Résultat :

public class SplitPane extends JSplitPane
{
public SplitPane (int orientation_split) {
super(orientation_split);
super.setDividerSize(7); // Je trouve le split trop gros
super.setDividerLocation(150);
}

public void setRightComponent(Component comp)
{
super.setRightComponent(comp);
super.setDividerLocation(150);
}
}