Как отобразить часть HTML-документа в Java

#java #html #swing

#java #HTML #swing

Вопрос:

У меня есть приложение, в котором мне нужно показать один конкретный раздел HTML-документа в swing JPanel. Отображаемый раздел зависит от того, что пользователь делает в любой момент времени.

Я знаю, что JEditorPane может отображать простой HTML, и на самом деле с точки зрения поддержки HTML этого более чем достаточно для моих нужд. Однако я не думаю, что смогу использовать это для отображения только части исходного HTML-файла.

Я подумал о том, чтобы поместить каждый раздел в div, затем скрыть все разделы с помощью CSS (display: none) и показать только целевой раздел, установив display: block в разделе, который я хотел показать. К сожалению, JEditorPane имеет ограниченную поддержку CSS, и, похоже, это не включает атрибут «display».

Прежде чем я перейду к реализации чего-то более сложного, есть ли какой-нибудь простой способ достичь этой цели?

Спасибо.

Ответ №1:

Вы можете попробовать Cobra :

http://lobobrowser.org/cobra.jsp

Комментарии:

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 .