Ich frage mich, ob es ein Weg, dies in einem „einfachen Weg“ zu tun und vielleicht kennt jemand eine Lösung:illegaler Zugriff erstreckt javax.swing.text.html.HTMLDocument
ich mit javax arbeiten bin. swing.text.html.HTMLDocument-Klasse, aber aus irgendeinem Grund, mindestens 2 Methoden, die ich brauche, sind nicht öffentlich, trotzdem muss ich sie "überschreiben", um ein paar Dinge zu ändern, aber in gewisser Weise, ich muss die HTMLDocument-Klasse behalten, weil ich eine Menge des Pakets javax.swing.text.html verwende ...
Also, was ich zuerst mache, war einige MyHTMLDocument erstellen erweitert HTMLDocument, und versucht, einige Methoden zu überschreiben ... als das fehlschlug, habe ich versucht, es mit Reflektion über einige Methoden zu lösen, funktioniert aber nicht .. so, dass ich este, habe ich "copy-paste all" HTMLDocument-Code als MyHTMLDocument, (HTMLDocument erweitern), ändern, was ich brauchte und es in meinem eigenen "javax.swing.text.html" -Paket, und es scheint um jetzt zu arbeiten, aber ...
... wenn ich es endlich laufen lasse, stehe ich auf einigen "Illegal Access errors" fest, wenn ich zum Beispiel TagActions anrufe ... und ich werde frustriert ...
bitte, wenn jemand mir helfen könnte, ich schätze es wirklich sehr.
UPDATE:
Ok, lassen Sie mich klarstellen:
Auf der Klasse javax.swing.text.html.HTMLDocument, können Sie drei Methoden finden:
öffentlichen getReader (int pos)
öffentlicher getReader (int pos, int pos, int popDepth, int pushDepth, HTML.Tag i nsertTag)
getReader (int pos, int pos, int popDepth, int pushDepth, HTML.Tag InsertTag, boolean insertInsertTag)
der letzte, ist nicht öffentlich oder geschützt.
Außerdem gibt es eine innere Klasse HTMLReader genannt und hat 3 Konstrukteure:
public HTMLReader (int offset)
öffentliche HTMLReader (int offset, int popDepth, int pushDepth, HTML .tag InsertTag)
HTMLReader (int Offset int popDepth, int pushDepth, HTML.Tag InsertTag, boolean insertInsertTag, boolean insertAfterImplied, boolean wantsTrailingNewline)
wieder das letzte, ist nicht öffentlich.
Was muss ich tun, ist aus meiner benutzerdefinierten Klasse zumindest diese zwei nicht-öffentlich zu nennen: public class MyHTMLDocument erweitert Htmldocument {
} aber ich nicht nur wissen, wie es zu tun .. Ich selbst versucht mit etwas Reflexion und es scheint, für Methoden zu arbeiten, aber ich kann einen Weg nicht finden, dasselbe für Erbauer zu tun ... Danke wieder.
Bitte zeigen Sie mit dem Code, was Sie versuchen zu tun. Die Methoden sind aus einem bestimmten Grund nicht öffentlich, und es gibt wahrscheinlich andere Möglichkeiten, um das zu erreichen, was Sie versuchen. Es ist nutzlos, dies völlig abstrakt zu diskutieren. –
Ich bin mir nicht so sicher, dass es immer einen Grund dafür gibt ... Ich denke wirklich, dass zumindest diese beiden geschützt werden sollten ... aber wie du gesagt hast, ist es nutzlos, darüber zu diskutieren. Ich habe bereits meinen ursprünglichen Beitrag geändert, um etwas mehr zu erklären, was ich mache. Danke für die Antwort – ThanatosMK