Menu popup avec boutons animés en Swing

zerailkiller Messages postés 19 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 30 avril 2009 - 30 avril 2009 à 17:15
zerailkiller Messages postés 19 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 30 avril 2009 - 30 avril 2009 à 17:51
Bonjour tout le monde !

Voilà je vous explique mon petit problème :

Je dois actuellement développer un menu popup un peu spécial, en SWING et rien d'autre.
Ce popup comporte des composants cachés qui comme a la façon des menus de Office 2003 se dévoilent quand on clique sur un boutons correspondant (ex: Détails et les boutons cachés apparaissent dans le menu progressivement).

J'ai codé une classe ExpansiblePanel qui hérite de JPanel (en BorderLayout), elle contient un bouton en NORTH et le JPanel à cacher ou afficher en CENTER.
Cet expansiblePanel est dans un MyPopup extends JPopupMenu ( en GridLayout).

J'ai reussi a faire en sorte que le panel se cache ou s'affiche quand on clique sur le bouton. Mais j'ai voulu faire ça de façon animée, et le problème c'est que je n'obtient aucune animation, le rendu se fait en une fois.

Voici le code de la classe ExpansiblePanel qui permet de cacher au fur et a mesure le contenu (content)

public void collapse(double percent)
{
if (percent == 0)
{
collapsed = true;
}
content.setSize(contentFullWidth,contentHeight - (int)(percent * (double)contentFullHeight));
content.getLayout().layoutContainer(content);
}

Enfin voici le code de la fonction Collapse qui se trouve dans Mypopup qui gère le rendu progressif (des timers seront mis plus tard):

public void collapse(CollapsiblePane pane)
{
for(double percent=0; percent < 1.0; percent += 0.1)
{
pane.collapse(percent);
}
}

Cette derniere est appelée par un actionListener pour un click sur le titre du ExpansiblePanel.
Si vous pouviez me dire pourquoi le rendu ne se fait pas progressivement ça serait vraiment génial :D :) (J'ai essayé tous les paint(), repaint() possibles et imaginables rien n'y fait !!!!!!!!!

Merci d'avaaaaaance !

2 réponses

zerailkiller Messages postés 19 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 30 avril 2009
30 avril 2009 à 17:36
OK petit problème avec Opéra donc....

Je la refais

Bonjour tout le monde !
Voilà je vous explique mon petit problème : Je
dois actuellement développer un menu popup un peu spécial, en SWING et
rien d'autre. Ce popup comporte des composants cachés qui comme a la
façon des menus de Office 2003 se dévoilent quand on clique sur un
boutons correspondant
 (ex: Détails et les boutons cachés apparaissent
dans le menu progressivement).

J'ai codé une classe ExpansiblePanel qui
hérite de JPanel (en BorderLayout), elle contient un bouton en NORTH et
le JPanel à cacher ou afficher en CENTER. Cet expansiblePanel est dans
un MyPopup extends JPopupMenu ( en GridLayout).

 J'ai reussi a faire en
sorte que le contenu se cache ou s'affiche quand on clique sur le bouton.
Mais ça ne change pas la taille du ExpansiblePanel...
De plus j'ai voulu faire ça de façon animée, et le problème c'est que je
n'obtient aucune animation, le rendu se fait en une fois. Voici le code
de la classe ExpansiblePanel qui permet de cacher au fur et a mesure le
contenu (content)

public void collapse(double percent)
{
   if (percent ==
0)
   { 
        collapsed = true;
   }

   content.setSize(contentFullWidth,contentHeight
- (int)(percent * (double)contentFullHeight));
   content.getLayout().layoutContainer(content);

 }

Enfin voici le code de
la fonction Collapse qui se trouve dans

Mypopup qui gère le rendu
progressif (des timers seront mis plus tard):

public void
collapse(CollapsiblePane pane)
{
      for(double percent=0; percent <
1.0; percent += 0.1)
     { pane.collapse(percent); }

}

Cette derniere est
appelée par un actionListener pour un click sur le titre du
ExpansiblePanel. Si vous pouviez me dire pourquoi le rendu ne se fait
pas progressivement ça serait vraiment génial  (J'ai essayé tous
les paint(), repaint() possibles et imaginables rien n'y fait !!!!!!!!!
Merci d'avaaaaaance !

  () ()
( °_° )
0
zerailkiller Messages postés 19 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 30 avril 2009
30 avril 2009 à 17:51
J'ai trouvé pour le graphique c'était update(graphic) et pas repaint,
et maintenant il me reste qu'a updater la taill du popup si quelqu'un sait...
Merci !

et BOn week end à tous !

  () ()
( °_° )
0
Rejoignez-nous