Nachdem ich die Idee mit dem dynamischen JTree verworfen habe, hab ich nun einen statischen JTree in mein Java-Projekt (HTML-Viewer) implementiert. Eins gleich vorweg: der HTML-Viewer ist nun maßgeschneidert auf eine bestimmte HTML-Datei (mein Professor hat nämlich gemeint, ich soll mir da nicht zu viel Aufwand antun).
Hier hab ich allerdings folgendes Problem:
Ich schaffe es nicht, das irgendwie hinzu bekommen, dass die Nodes des Trees auf eine Textmarke, die in der HTML-Datei definiert wurde, zeigen. Es soll nämlich beim Klick auf einen dieser Nodes zur entsprechenden Textmarke in der HTML-Datei gesprungen werden (soll in der EditorPane auf der rechten Seite - siehe angehängtes Bild - dann natürlich angezeigt werden).
Ich hab da schon einiges probiert, bin aber bis jetzt nicht auf einen grünen Zweig gekommen.
Hier mal die entsprechende Klasse, diese die Anker definiert + der dazu gehörige Konstruktor
Und nachstehend einer meiner Versuche, das Problem zu lösen:
Anscheinend denkt das Programm, dass es bei zB. bei dem Stringwert "index.html#credits" um den gesamten Dateinamen handelt...Daher bekomm ich dann natürlich auch auf der Konsole und im Programm selbst die Fehlermeldung, dass die entsprechende Datei nicht gefunden wurde. Es soll allerdings dem Programm irgendwie klargemacht werden, dass es sich bei #credits um eine Textmarke handelt.
Hat hier jemand ne Idee?
Hier hab ich allerdings folgendes Problem:
Ich schaffe es nicht, das irgendwie hinzu bekommen, dass die Nodes des Trees auf eine Textmarke, die in der HTML-Datei definiert wurde, zeigen. Es soll nämlich beim Klick auf einen dieser Nodes zur entsprechenden Textmarke in der HTML-Datei gesprungen werden (soll in der EditorPane auf der rechten Seite - siehe angehängtes Bild - dann natürlich angezeigt werden).
Ich hab da schon einiges probiert, bin aber bis jetzt nicht auf einen grünen Zweig gekommen.
Hier mal die entsprechende Klasse, diese die Anker definiert + der dazu gehörige Konstruktor
Java:
private class AnkerInfo {
public String ankerName;
public URL ankerURL;
public AnkerInfo(String anker, String filename) {
ankerName = anker;
ankerURL = getClass().getResource(filename);
if (ankerURL == null) {
System.err
.println("Folgende Datei konnte nicht gefunden werden: "
+ filename);
}
}
public String toString() {
return ankerName;
}
}
Und nachstehend einer meiner Versuche, das Problem zu lösen:
Java:
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode category = null;
DefaultMutableTreeNode anker = null;
category = new DefaultMutableTreeNode("Files");
top.add(category);
anker = new DefaultMutableTreeNode(new AnkerInfo("Introduction",
"index.html"));
category.add(anker);
anker = new DefaultMutableTreeNode(new AnkerInfo("Functions",
"index.html#Functions"));
category.add(anker);
anker = new DefaultMutableTreeNode(new AnkerInfo("Systemrequirements",
"index.html#Systemrequirements"));
category.add(anker);
anker = new DefaultMutableTreeNode(new AnkerInfo("Further Information",
"index.html#Furtherinf"));
category.add(anker);
anker = new DefaultMutableTreeNode(new AnkerInfo("Credits",
"index.html#credits"));
category.add(anker);
}
Anscheinend denkt das Programm, dass es bei zB. bei dem Stringwert "index.html#credits" um den gesamten Dateinamen handelt...Daher bekomm ich dann natürlich auch auf der Konsole und im Programm selbst die Fehlermeldung, dass die entsprechende Datei nicht gefunden wurde. Es soll allerdings dem Programm irgendwie klargemacht werden, dass es sich bei #credits um eine Textmarke handelt.
Hat hier jemand ne Idee?