2012-08-20 4 views
18

bricht Ich behalte Code, der implementiert ein angepasstes Aussehen und Verhalten in Java. Während kürzlich eine Aktualisierung von Java-Version zu tun (aus anderen Gründen) fand ich, dass das Look and Feel aufgrund eines Feld brachen nicht aufJava Look and Feel - wie man eine Abhängigkeit von sun.swing.SwingUtilities2

sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET; 

gefunden Dies ist in einer Klasse, die eng auf BasicMenuItemUI.layoutMenuItem() circa Java 6u02 basiert (here's the source). Ich habe festgestellt, dass Oracle ihren Code um eine MenuItemLayoutHelper in der neuen Zielversion, die ich verwende, Java 6u31 enthalten.

Ich könnte einfach die MenuItemLayoutHelper verwenden, aber das löst das Problem nicht, es verschiebt es einfach bis zum nächsten Mal die Java-Interna geändert werden. Daher habe ich dies als eine Lösung abgetan.

Ich bin nach einigen Ratschlägen, wie man ein Links-nach-rechts-Layout ähnlich wie BasicMenuItemUI erreichen kann, ohne die maximale Textverschiebung der Eltern kennen zu müssen (die schlechte Abhängigkeit von sun.swing.SwingUtilities zu entfernen).

+17

wahrscheinlich keine Option, um die Person, die diese Abhängigkeit eingeführt hat, in einen Raum sperren, bis alles behoben ist :-) Am Ende des Tages gibt es nicht viel zu tun ... außer ... Husten .. c & p, ehh, ich meine, schauen Sie sich den Sun-Code an und implementieren Sie eine überarbeitete Version. – kleopatra

+9

@kleopatra Meine Mutter warnte mich ** nicht ** "in die Sonne zu schauen". (Musen) Sie hat nicht erwähnt, "Code" obwohl .. –

+0

Autsch ... Dies ist das Aushängeschild für Build Time Code Standards Durchsetzung. – Gus

Antwort

4

Wie alffan sagte, können Sie nicht. Sie müssen entweder auf den Code angewiesen sein, die Klasse kopieren und in Ihrem Programm verwenden, sie überhaupt nicht verwenden und eine Bibliothek eines Drittanbieters verwenden oder diese Funktion nicht verwenden.

2

Ok, es könnte eine Weile her sein, aber ich fand heraus, dass ich meine eigene Konstante verwenden konnte, anstatt sun.swing.SwingUtilities2.BASICMENUITEMUI_MAX_TEXT_OFFSET, solange sie konsistent in dem fehlerhaften Code verwendet wurde. Auf keinen Fall eine ideale Lösung.

Auf der Oberseite ist schlechte Importe von Sonnenpaketen in die Codierungsregelüberprüfungen gegangen.

Verwandte Themen