Пишу для курсовой программку на java с UI. Встал вопрос о прикручивании help (инструкции, о программе и т.п.). Как это делают вообще? Варианты типа html или .chm вижу, но непонятно как это делают обычно, по канонам. Ну и мануал может у кого есть, гугление ничего не дало.
Раз уж вопрос относится к Java, рекомендовал бы отказаться от типично майкрософтовских технологий, т.к. они, в отличии от Java, работают только в Windows. Я имею ввиду CHM файлы. Существует старая стандартная технология JavaHelp - по-моему ранее была частью JDK (или JEE), но Oracle её забросила. Можно найти на GitHub. Например в NetBeans help постоен именно в этой системе. Oracle имеет собственную систему - Oracle Help Technologies. Так же имеется система на базе Eclipse.
Дополнение: В качестве альтернативы можно сделать банальный статический web-сайт и запускать его локально через какой-нибудь Jetty. Eclipse Help примерно так и сделан.
Как вариант, можно справочную информацию написать на html
, и далее уже из UI
открывать ее при помощи WebView
Например, в JavaFX
это будет выглядеть так:
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
URL url = getClass().getResource("help.html");
webEngine.load(url.toExternalForm());
Я в свое время потратил какое-то время на решение этой задачи, см. https://softwarerecs.stackexchange.com/questions/32162/help-system-for-a-desktop-java-application.
Вариант с CHM
не рассматривался изначально, поскольку по ТЗ программа должна был работать на всех основных платформах (Windows, Linux и Mac). Вариант с открытием браузера мы с заказчиком сочли несерьезным, там нормальный поиск сделать невозможно, и вообще несолидно как-то.
Оставшихся варианов, как я и предполагал, немного:
Первый вариант (эклипсовский) -- тяжел и по весу, и в использовании (он должен таскать за собой пол-эклипса, минимальная сборка получается в районе 100 МБ) и содержит много излишеств.
Оракловский хелп -- платный, тоже отпадает.
Остается JavaHelp
. Это тоже не блеск -- он содержит ошибки, он выглядит страшно, индекс у него никуда не годный и наполнять надо руками, в нем не предусмотрено изменение шрифта, и он сделан на допотопном AWT
. Для меня последнее обстоятельство было очень неприятно, моя прорамма была на SWT
, и надо было обмениваться событиями -- программа должна открывать окна справки, при измении шрифта надо использовать FontDialog из SWT, а при изменении размеров окна справки или шрифта программа должна запомнить последнее состояние, чтобы восстановить его при следующем запуске.
Пришлось повозиться и с допиливанием самого JavaHelp
(добавить возможность выбора шрифта), и с прокси-методами для обмена событиями между моим SWT-потоком и AWT-потоком, в котором работает JavaHelp.
Но в конце концов получилось более-менее сносно:
А недавно я обнаружил, что замечательный графический редактор yEd, написанный на Java, тоже использует слегка подправленный JavaHelp, что меня утвердило во мнении, что это единственный на сегодня вариант, который дает более-менее приличные результаты и при этом не отбирает слишком много ресурсов (включая размер дистрибутива и время разработчика).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть метод, который в цикле заполняет List элементами из ДБУ элементов в ДБ есть дополнительный boolean признак, в зависимости от значения которого...
Создал свое первое приложение под AndroidНа настоящем устройстве после установки, если я хочу скачать с компьютера и установить другую версию,...
Этот код генерирует шахматную доску 8x8, но я не очень хорошо его понял
Я создал небольшой скрипт на промисах, который поочередно выполняет 2 функции, но мне не нравиться его структураМне не нравиться что промис...