Accueil > Projets > ScientificPad / MathMLPad [fr] > Java un gros problème ! (1)

Java un gros problème ! (1)

Java SE 8. Comment faire quand une mise à jour d’une API introduit des problèmes ?

dimanche 12 octobre 2014, par ScientificWare

Le projet ScientificPad avance au gré de mon temps libre et de mon humeur.
La bibliothèque Swing est maintenant figée, le passage à JavaFX (son remplaçant) devait stopper son évolution et je ne m’attendais pas à de telles régressions dans son code.

Je dirais presque que Swing est une bibliothèque morte pour prendre comme illustration le latin.

Or quelqu’un a touché quelque chose dans le code entre la version Java SE 7 et Java SE 8. Ce qui fait que l’affichage des formules mathématiques dans ScientificPad ne se comporte plus correctement.

L’image ci-dessous illustre le problème, l’image haute est sous Java SE 7 (l’affichage du tableau est correct) et l’image basse correspond au même programme tournant sous Java SE 8 (l’affichage du tableau est défaillant).

J’ai identifié la source du problème : L’API Swing Text est calquée sur le principe de fonctionnement de TEX : une série de boite qui s’affichent les unes dans les autres. Les éléments visibles ce sont les boites. Si une boite contient d’autres boites, elle est dite « parent ». La boite qui est à l’intérieur d’une autre est appelée « enfant ». Comme dans la vie, le parents peuvent être des enfants et les enfants des parents ... Le tout est décrit par un arbre dont les branches représentent la généalogie des boites exactement comme dans DOM.

Le problème vient du fait que certains parents ne savent plus exactement combien d’enfants ils ont ;-) ! ! ! ! Plus exactement, le nombre d’enfant est multiplié par 2 !

C’est la deuxième fois que je suis obligé de plonger dans le code source. C’est épuisant.


La correction a été apportée en toute discrétion (pas de retour de la part d’Oracle), j’ai découvert en installant la dernière version de Java SE (Java SE 8u40) que ce problème avait été résolu. Mon rapport a été finalement identifié sous le code bug_id : 8065080.

Mais pour suivre son traitement, il faut se rendre là JDK-8065080 Duplicating of Views when we insert these Views in an other View.