Java Look and feel - comment briser une dépendance au soleil.swing.SwingUtilities2


Je maintiens du code qui implémente un aspect personnalisé en Java. En faisant une mise à niveau récente de la version Java (pour d'autres raisons), j'ai trouvé que l'apparence était cassée en raison d'un champ introuvable sur

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET;

C'est dans une classe qui est étroitement basée sur BasicMenuItemUI.layoutMenuItem() vers Java 6u02 (voici le code source). J'ai trouvé qu'Oracle a re-factorisé son code pour inclure un MenuItemLayoutHelper dans la nouvelle version cible que j'utilise, Java 6u31.

Je pourrais juste utiliser le MenuItemLayoutHelper mais cela ne résout pas le problème, il le reporte juste jusqu'à la prochaine fois que les internes Java sont modifiés. Par conséquent, j'ai écarté cela comme une solution.

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

Author: Marek Sebera, 2012-08-20

2 answers

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é.

 4
Author: Coupon22, 2013-05-13 10:18:37

Ok ça fait peut-être un moment mais j'ai compris que je pouvais simplement utiliser ma propre constante au lieu de sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET tant qu'il a été utilisé de manière cohérente dans le code incriminé. En aucun cas une solution idéale.

À la hausse, les mauvaises importations des paquets sun sont entrées dans les vérifications de la règle de codage.

 2
Author: Petec, 2012-11-27 13:17:10