Хорошо, я обнаружил (из лакомых кусочков, полученных в нескольких тангенциально связанных ответах на другие вопросы), что мне нужно было создать элемент URL, а затем заполнить его с помощью ClassLoader или аналогичного метода.
Например, один человек получил свою вещь:
String filename = getClass().getClassLoader().getResource("res/Kappa.png").toString();
String preTag="filename is : "+filename+"
"; String imageTag =" "; kit.insert HTML (do c, do c .getLength (), preTag + imageTag, 0, 0, HTML .Tag.IMG);
Тем временем Исходя из этой подсказки, метод, который в итоге заставил мои вещи работать «лучше», был:
URL url;
String keystring = "<img src=\"";
String file, tag, replace;
int base;
while (s.toLowerCase().contains(keystring)) { // Find next key (to-lower so we're not case sensitive)
//There are undoubtedly more efficient ways to do this parsing, but this miraculously ran perfectly the very first time I compiled it, so, you know, superstition :)
base = s.toLowerCase().indexOf(keystring);
file = s.substring(base + keystring.length(), s.length()).split("\"")[0]; // Pull the filename out from between the quotes
tag = s.substring(base, base + keystring.length()) + file + "\""; // Reconstruct the part of the tag we want to remove, leaving all attributes after the filename alone, and properly matching the upper/lowercase of the keystring
try {
url = GameModule.getGameModule().getDataArchive().getURL("images/" + file);
replace = "<img src=\"" + url.toString() + "\""; // Fully qualified URL if we are successful. The extra
// space between IMG and SRC in the processed
// version ensures we don't re-find THIS tag as we
// iterate.
} catch (IOException ex) {
replace = "<img src=\"" + file + "\""; // Or just leave in except alter just enough that we won't find
// this tag again.
}
if (s.contains(tag)) {
s = s.replaceFirst(tag, replace); // Swap in our new URL-laden tag for the old one.
} else {
break; // BR// If something went wrong in matching up the tag, don't loop forever
}
}
//BR// Insert a div of the correct style for our line of text.
try {
kit.insertHTML(doc, doc.getLength(), "\n<div class=" + style + ">" + s + "</div>", 0, 0, null);
} catch (BadLocationException ble) {
ErrorDialog.bug(ble);
} catch (IOException ex) {
ErrorDialog.bug(ex);
}
conversation.update(conversation.getGraphics()); //BR// Force graphics to update
Мой пакет работает под VASSAL (игровой платформой), и поэтому для меня было идеальным иметь возможность вытащить вещи из архива данных моего модуля VASSAL (zip-файл), хотя в то время, когда я задавал вопрос, я был бы рад просто узнать в любом месте Я мог бы заставить его найти файл изображения и вытащить его из архив данных был более поздней целью.
Моя стратегия здесь заключается в том, чтобы позволить html (который может быть создан другим разработчиком модуля, а не мне) иметь простые имена файлов, на которые ссылаются в тегах источника ( например, src = "dice.png"), и я go анализирую их и заменяю их результатом запроса URL, если он будет успешным.
Если кто-то имеет более полный ответ на вопрос о Оригинальный вопрос (где вообще HTMLEditorKit искать местные ПУТИ? Что такое локальный путь по умолчанию? Как я могу сделать так, чтобы он выглядел в моем текущем рабочем каталоге, или в каталоге, из которого запущено приложение, или на самом деле что-нибудь локальное в этом роде? исчерпывающий ответ на оригинальный вопрос.