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

omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 - 4 sept. 2006 à 17:45
 DrakeRoxas - 16 août 2013 à 15:52
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
4 sept. 2006 à 17:51
As-tu essayé de désactiver les splitpanes ? (setEnabled = false)
0
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
4 sept. 2006 à 18:01
oui ca n'est pas efficace
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
4 sept. 2006 à 19:35
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
0
omcougar Messages postés 152 Date d'inscription mardi 4 mai 2004 Statut Membre Dernière intervention 8 octobre 2008 1
5 sept. 2006 à 09:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
5 sept. 2006 à 10:40
Salut,

essai fenetre.setResizable(false) avant :P

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

WORA
0
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);
}
}
0