JSplitPanes imbriqués

Résolu
Pimousse77 Messages postés 42 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 janvier 2005 - 24 sept. 2004 à 12:23
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 8 oct. 2004 à 23:42
Pimousse : débutant en java

Bonjour à tous,

Mon problème est le suivant :

J'ai une interface graphique que je veux couper en 3 parties rétractables, comme ça :

________________________
| |
|________partie 1_________|
| |
|_°______partie 2 ________|
| |
|________partie 3_________|

J'ai donc crée un premier Jsplitpane avec comme TopComponent la partie 1, et comme BottomComponent un autre JSplitPane qui contient lui les parties 1 et 2.

Jusque là ça marche à peu près excepté quelques bugs de Layout parfois. Le vrai problème c'est que l'on ma demandé (et je n'ai pas le choix) de faire UN SEUL bouton qui permet de rétracter les parties 1 et 3 pour n'avoir plus à l'écran que la partie 2. (C'est le petit °).

J'ai donc essayé de faire un

splitPane1.setDividerLocation(splitPane.getMinimumLocation());
splitPane2.setDividerLocation(splitPane.getMaximumLocation());

mais ca ne marche que pour le splitPane1. Celui se rétracte puis reprend sa taile originale quand je lui demande, pas de problème. Par contre le splitPane2 ne veut rien savoir ! J'ai mis des

println(splitPane.getDividerLocation());

Et je vois que la valeur de la position de la barre a bien été modifiée et poussée (à priori) à son maximum. Mais graphiquement la barre reste où elle est ! Jai bien essayé des repaint() et des updateUI() mais rien n'y fait.

En revanche, si j'essaie de bouger la barre "à la main", ca marche très bien et je peux retracter la partie 3 complètement.

Déjà merci de m'avoir lu jusqu'ici, et merci d'avance pour toutes vos idées, parceque moi là je commence à m'arracher les cheveux :(

28 réponses

Pimousse77 Messages postés 42 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 janvier 2005
7 oct. 2004 à 09:47
Pimousse : moins débutant en java ;o)

Bien sûr que j'ai fait comme ça !! Et tu es pourtant bien placé pour le savoir puisque tu m'as toi même fait remarquer que ma classe de traitement était un Singleton ;o)

Un seul KeyListener pour tous les composants, et même une seule instance du KeyListener, et donc bien sûr un test du type de composant grâce au mot clé instanceof bien pratique que l'on ne présente pourtant pas dans les bouquins (d'apprentissage (pour débutants)) :D
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
7 oct. 2004 à 18:41
GodConan :clown)

par contre je tavai di que le singleton cetai pas forcement une bonne idee.. ;o)

Mais bon tu peu qd meme en faire +sieur des keylistener
la plus par du temp on les place en class local au meme nivo que le composent qui les utlise c plus simple ...
0
Pimousse77 Messages postés 42 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 janvier 2005
8 oct. 2004 à 09:39
Bah c'est vrai que c'est assez original mais bon ca marche plutôt bien, ou du moins ca en à l'air ;o)

Disons que ca permet de n'avoir qu'une seule instance de la classe de traitement à chaque fois.
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 oct. 2004 à 17:00
GodConan :clown)

oui mais tu le fai dependre de l instance qui l utilise dc si jamais tu fait 2 instance de class utilisatrice ;o) les action seront toujour executer sur la dernier instance ... ;o) voi tu ?! ;o) c est la que le singleton est mal venu ;o)

++
0

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

Posez votre question
Pimousse77 Messages postés 42 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 janvier 2005
8 oct. 2004 à 17:08
Pimousse : débutant en java

Non non, j'avais pensé à ça déjà, et si tu regardes bien le code tu verras que l'on fait appel au Singleton avec un getInstance(this).

Qui permet donc au Singleton de mettre à jour à chaque fois sa variable "appelant".

;o) On me la fait pas à moi ;o)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 oct. 2004 à 17:18
GodConan :clown)

ben regarde bien ;o) .... tu met bien this et dc tu change la reference pour le this precedent lorsqu il sera ds l actionperform ... ;o) je confirme dc ;o) essaye tu vera ... ;o)
0
Pimousse77 Messages postés 42 Date d'inscription mercredi 2 avril 2003 Statut Membre Dernière intervention 6 janvier 2005
8 oct. 2004 à 20:41
Merde alors ! Mais t'as complètement raison !
C'est l'ActionEvent qui devrait porter la nouvelle reference vers l'appelant, et non l'abonnement au listener...

Rah là là j'ai encore fait n'importe quoi... Mais tu sais ce qui m'énerve le plus ? C'est que c'est pas moi qui ai voulu faire un Singleton pour ces trucs là. On m'a dit vas y fait comme ça c'est bien les Singletons... Et comme le mec il a carrément plus d'experience que moi en java j'ai fait Banco...
Tu parles... C'est vraiment pas l'utilisation la plus intelligente de ce pattern...

Enfin bon, maintenant reste à savoir si je vais tout recoder ou si je vais trouver une astuce.

Que penses tu de mettre dans le actionPerformed un truc du style :

appelant = actionEvent.getSource().getParent();

while ( ! ( appelant instanceof JFrame ) )
appelant = appelant.getParent();

C'est du bricolage, et maintenant que je viens d'ouvrir les yeux sur l'inutilité du Singleton ici, je me demande si je vais pas plutôt réecrire mes classes...

Enfin bon...

Merci pour tout en tout cas et @bientôt ;o)
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
8 oct. 2004 à 23:42
GodConan :clown)

;o) vi reecri me semble plus resonable ;o) desoler davoir charger autant le forum sur ce prob ;o)
pour tou te dire je n est pas lu le reste de ton prog ;o)
mais une grde parti etait genere par VE dc pas trop interessant ... ;o)
C surtout ce singleton ;o) qui m interpeler ;o) par contre tu peu use un singleton au nivo de la class principal...
et de toute les classe lier aux donnee enfin celle qui interface une BDD par exemple ;o) enfin il y a plein d exmple ;o) faux juste faire attention a leur emploi

Pour ton cas normalement tu n utilise que 1 seul parent ?!! dc c pas trop grave... ;o)
autrement pour faire la correction il te suffi de tranformer ton singleton en class normale avec un constructeur parametrer et ;o) cela fonctionera bien avec peu de modif...

++
0
Rejoignez-nous