Как сделать help java?

218
19 декабря 2017, 17:56

Пишу для курсовой программку на java с UI. Встал вопрос о прикручивании help (инструкции, о программе и т.п.). Как это делают вообще? Варианты типа html или .chm вижу, но непонятно как это делают обычно, по канонам. Ну и мануал может у кого есть, гугление ничего не дало.

Answer 1

Раз уж вопрос относится к Java, рекомендовал бы отказаться от типично майкрософтовских технологий, т.к. они, в отличии от Java, работают только в Windows. Я имею ввиду CHM файлы. Существует старая стандартная технология JavaHelp - по-моему ранее была частью JDK (или JEE), но Oracle её забросила. Можно найти на GitHub. Например в NetBeans help постоен именно в этой системе. Oracle имеет собственную систему - Oracle Help Technologies. Так же имеется система на базе Eclipse.

Дополнение: В качестве альтернативы можно сделать банальный статический web-сайт и запускать его локально через какой-нибудь Jetty. Eclipse Help примерно так и сделан.

Answer 2

Как вариант, можно справочную информацию написать на html, и далее уже из UI открывать ее при помощи WebView

Например, в JavaFX это будет выглядеть так:

WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
URL url = getClass().getResource("help.html");
webEngine.load(url.toExternalForm());
Answer 3

Я в свое время потратил какое-то время на решение этой задачи, см. https://softwarerecs.stackexchange.com/questions/32162/help-system-for-a-desktop-java-application. Вариант с CHM не рассматривался изначально, поскольку по ТЗ программа должна был работать на всех основных платформах (Windows, Linux и Mac). Вариант с открытием браузера мы с заказчиком сочли несерьезным, там нормальный поиск сделать невозможно, и вообще несолидно как-то.

Оставшихся варианов, как я и предполагал, немного:

  • Эклипсовский хелп;
  • Оракловский "Help for Java";
  • Старый бесплатный JavaHelp.

Первый вариант (эклипсовский) -- тяжел и по весу, и в использовании (он должен таскать за собой пол-эклипса, минимальная сборка получается в районе 100 МБ) и содержит много излишеств.

Оракловский хелп -- платный, тоже отпадает.

Остается JavaHelp. Это тоже не блеск -- он содержит ошибки, он выглядит страшно, индекс у него никуда не годный и наполнять надо руками, в нем не предусмотрено изменение шрифта, и он сделан на допотопном AWT. Для меня последнее обстоятельство было очень неприятно, моя прорамма была на SWT, и надо было обмениваться событиями -- программа должна открывать окна справки, при измении шрифта надо использовать FontDialog из SWT, а при изменении размеров окна справки или шрифта программа должна запомнить последнее состояние, чтобы восстановить его при следующем запуске.

Пришлось повозиться и с допиливанием самого JavaHelp (добавить возможность выбора шрифта), и с прокси-методами для обмена событиями между моим SWT-потоком и AWT-потоком, в котором работает JavaHelp.

Но в конце концов получилось более-менее сносно:

А недавно я обнаружил, что замечательный графический редактор yEd, написанный на Java, тоже использует слегка подправленный JavaHelp, что меня утвердило во мнении, что это единственный на сегодня вариант, который дает более-менее приличные результаты и при этом не отбирает слишком много ресурсов (включая размер дистрибутива и время разработчика).

READ ALSO
Учитывать доп. признак у строки

Учитывать доп. признак у строки

Есть метод, который в цикле заполняет List элементами из ДБУ элементов в ДБ есть дополнительный boolean признак, в зависимости от значения которого...

186
Обновление приложения Android

Обновление приложения Android

Создал свое первое приложение под AndroidНа настоящем устройстве после установки, если я хочу скачать с компьютера и установить другую версию,...

173
Обьясните алгоритм выполнения кода

Обьясните алгоритм выполнения кода

Этот код генерирует шахматную доску 8x8, но я не очень хорошо его понял

199
Поочередное выполнение задач с Promise

Поочередное выполнение задач с Promise

Я создал небольшой скрипт на промисах, который поочередно выполняет 2 функции, но мне не нравиться его структураМне не нравиться что промис...

237