Java Look and feel – comment rompre une dépendance à sun.swing.SwingUtilities2

Je maintiens du code qui implémente une apparence personnalisée en Java. Lors d’une mise à jour récente de la version Java (pour d’autres raisons), j’ai constaté que l’image et la sensation de se sentir cassées en raison d’un champ introuvable

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET; 

Il s’agit d’une classe étroitement basée sur BasicMenuItemUI.layoutMenuItem() Java 6u02 ( voici la source ). J’ai constaté qu’Oracle avait re-factorisé son code pour inclure un MenuItemLayoutHelper dans la nouvelle version cible que j’utilise, Java 6u31.

Je pourrais simplement utiliser le MenuItemLayoutHelper mais cela ne résout pas le problème, il le retarde jusqu’à la prochaine modification des éléments internes de Java. Par conséquent, je l’ai écarté comme une solution.

Je suis après quelques conseils sur la façon d’obtenir une disposition de gauche à droite similaire à BasicMenuItemUI sans avoir besoin de connaître le décalage de texte maximal des parents (en supprimant la mauvaise dépendance à sun.swing.SwingUtilities).

    Comme l’a dit Albfan, vous ne pouvez pas. Vous devez soit dépendre du code, copier la classe et l’utiliser dans votre programme, ne pas l’utiliser du tout et utiliser une bibliothèque tierce, ou ne pas utiliser cette fonctionnalité.

    Ok, cela fait peut-être un moment, mais je me suis dit que je pouvais simplement utiliser ma propre constante au lieu de sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET tant qu’elle était utilisée systématiquement dans le code incriminé. En aucun cas une solution idéale.

    En revanche, les vérifications des règles de codage ont entraîné de mauvaises importations provenant d’emballages sun.