Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de rafraîchissement d'un JPanel

2 réponses
Avatar
Thomas Baruchel
Bonjour, j'ai dans une JFrame, un petit espace dans lequel je fais
apparaître dynamiquement des composants (des petits JTextField, des
boutons, etc.) ; cet espace est un JScrollBar contenant un JPanel ;
donc j'ajoute au JPanel les composants de façon dynamique. Sur mon OS
(FreeBSD, qui utilise en fait le jdk pour Linux), tout marche comme je
veux : affichage instantané dès l'utilisation de la méthode
JPanel.add(), et disparition instantané dès que je supprime le
composant. En revanche, l'utilisateur travaille sur des Mac OS X
auxquels je n'ai pas accès pour des raisons géographiques. Or, chez lui,
si la disparition est bien immédiate, l'apparition ne se fait qu'au bout
d'environ trois minutes s'il ne touche à rien ou alors dès qu'il
commence à redimensionner et déplacer sa fenêtre. Du coup, je lui ai
envoyé une version avec des repaint() sur à peu près tout :
- le JPanel,
- le JScrollbar
- le JViewport associé au JScrollbar
de mon côté je ne constate aucune différence, mais lui non plus.

Auriez-vous une idée de la nature exacte de l'opération de
"rafraîchissement" qui correspond à mon besoin ?

Cordialement,

--
Thomas Baruchel
Pour m'écrire : http://cerbermail.com/?OEyHGNQFEa

2 réponses

Avatar
JScoobyCed
Thomas Baruchel wrote:
Bonjour, j'ai dans une JFrame, un petit espace dans lequel je fais
apparaître dynamiquement des composants (des petits JTextField, des
boutons, etc.) ; cet espace est un JScrollBar contenant un JPanel ;
donc j'ajoute au JPanel les composants de façon dynamique. Sur mon OS
(FreeBSD, qui utilise en fait le jdk pour Linux), tout marche comme je
veux : affichage instantané dès l'utilisation de la méthode
JPanel.add(), et disparition instantané dès que je supprime le
composant. En revanche, l'utilisateur travaille sur des Mac OS X
auxquels je n'ai pas accès pour des raisons géographiques. Or, chez lui,
si la disparition est bien immédiate, l'apparition ne se fait qu'au bout
d'environ trois minutes s'il ne touche à rien ou alors dès qu'il
commence à redimensionner et déplacer sa fenêtre. Du coup, je lui ai
envoyé une version avec des repaint() sur à peu près tout :
- le JPanel,
- le JScrollbar
- le JViewport associé au JScrollbar
de mon côté je ne constate aucune différence, mais lui non plus.

Auriez-vous une idée de la nature exacte de l'opération de
"rafraîchissement" qui correspond à mon besoin ?

Cordialement,



Au lieu de repaint() (qui etait deja appele de toute facon), vous pouvez
essayer:

maFrame.validate();

ou maFrame est le Container principale (Window, JWindow, Frame, JFrame, ...)

<javadoc>
public void validate()

Validates this container and all of its subcomponents.

The validate method is used to cause a container to lay out its
subcomponents again. It should be invoked when this container's
subcomponents are modified (added to or removed from the container, or
layout-related information changed) after the container has been displayed.
</javadoc>

--
JSC

Avatar
Isammoc
Auriez-vous une idée de la nature exacte de l'opération de
"rafraîchissement" qui correspond à mon besoin ?


unvalid? revalid?

ou un truc du genre
*a la flemme de chercher sur la javadoc*

Pour moi, c'est ca qui avait marcher.

ou un repaint(0)

Cordialement,


de meme

--
Isammoc