#java #html #swing
#java #HTML #swing
Вопрос:
У меня есть приложение, в котором мне нужно показать один конкретный раздел HTML-документа в swing JPanel. Отображаемый раздел зависит от того, что пользователь делает в любой момент времени.
Я знаю, что JEditorPane может отображать простой HTML, и на самом деле с точки зрения поддержки HTML этого более чем достаточно для моих нужд. Однако я не думаю, что смогу использовать это для отображения только части исходного HTML-файла.
Я подумал о том, чтобы поместить каждый раздел в div, затем скрыть все разделы с помощью CSS (display: none) и показать только целевой раздел, установив display: block в разделе, который я хотел показать. К сожалению, JEditorPane имеет ограниченную поддержку CSS, и, похоже, это не включает атрибут «display».
Прежде чем я перейду к реализации чего-то более сложного, есть ли какой-нибудь простой способ достичь этой цели?
Спасибо.
Ответ №1:
Вы можете попробовать Cobra :
Комментарии:
1. Хорошее предложение, спасибо. Хотя сначала я хотел бы посмотреть, есть ли какие-либо варианты, не связанные с внешней библиотекой.
2. еще более рекомендуемый проект dj: djproject.sourceforge.net/main/index.html
Ответ №2:
Переопределите ViewFactory и замените представления DIV. Если они должны быть скрыты, пусть они возвращают 0 из методов getXXXSpan.
См., например, раздел сворачивание связанного кода http://java-sl.com/collapse_area.html
Комментарии:
1. Это очень интересный подход. Не могли бы вы подробнее остановиться на этом?
Ответ №3:
Я не нашел способа сделать то, что хотел, полагаясь на поддержку CSS от JEditorPane
. В итоге я вручную проанализировал HTML-документ и разделил его на «фрагменты» (разделы верхнего уровня, представляющие разделы), а затем отображал каждый раздел по мере необходимости с помощью JEditorPane.setText
.