Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich nehme mal an, Du verwendest ein JEditorPane als Komponente.
Einfach einen HyperlinkListener dran hängen. Ein Bsp wie der Listener aussehen kann steht in der Doku: JEditorPane (Java 2 Platform SE 5.0)
Mit Ankern habe ich das jetzt noch nicht versucht. Aber mit JEditorPane#getPage() kommt man an die aktuelle URL. Damit sollte sich eine korrekte URL zusammenstellen lassen.
Mit der Zeile
URL url = new URL(ivHtmlPage.getPage().getPath() + e.getURL().getPath());
möchte ich die URL der Seite mit dem Verweis im Code verknüpfen ("#sprungpunkt")
Er bekommt einen Nullpointer, da ivHtmlPage.getPage() null zurück liefert.
Warum weiß ich nicht genau.
Befüllt wird das ganze folgendermaßen:
Java:
ivHtmlPage.setEditorKit(new HTMLEditorKit());
ivHtmlPage.setEditable(false);
StringBuilder b = new StringBuilder();
b.append("<html>");
...
b.append("</html>");
ivHtmlPage.setText(b.toString());
ivHtmlPage.setCaretPosition(0);
so, mit etwas hängen und würgen hat es jetzt geklappt.
Ich mische meine Verweise nun nicht mehr als <a name="#sprungpunkt"> sondern mit <a name="file:#sprungpunkt"> ein, da ansonsen mit e.getURL() keine URL erzeugt werden kann. im Listener gucke ich ob meine URL so startet, parse den Sprungpunkt aus und gehe mit ivHtmlPage.scrollToReference(s) an die entsprechende stelle.
kleiner Hinweis für alle mit demselben Problem: setCaretPosition kann nicht benutzt werden, da hier an den Inhalt des Document gegangen wird, der keine html-Tags beinhaltet. Also auch wenn man sich mit nem indexOf die Position innerhalb des html-codes ausgerechnet hat, kommt man mit ste CaretPosition nicht weiter.