Предварительный просмотр HTML в Java

Какие библиотеки / методы, которые вы знаете, могут выполнять базовое представление HTML в Swing? Вы можете прокомментировать свой опыт?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
648
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Я давно не пробовал этого, но быстрый поиск в Google показывает некоторые возможности:

Вы пытаетесь сделать это в апплете или приложении? Если это приложение (или подписанный апплет), вы потенциально можете создать экземпляр IE или Firefox в своем приложении. Webrenderer действует как оболочка Swing для этого.

Swing имеет встроенный компонент под названием Базовый HTML. Я никогда им не пользовался, но думаю, что для базовых вещей этого должно хватить.

Ответ принят как подходящий

Многие элементы управления Swing (например, JLabel) могут отображать базовое содержимое HTML. JEditorPane можно использовать для отображения HTML-страниц. Однако эти элементы управления ограничены поддержкой HTML 3.2.

Для более богатого опыта я бы использовал Компоненты интеграции JDesktop.

JDIC provides Java applications with access to functionalities and facilities provided by the native desktop. It consists of a collection of Java packages and tools. JDIC supports a variety of features such as embedding the native browser, launching the desktop applications, creating tray icons on the desktop, registering file type associations, creating JNLP installer packages, etc.

Это исторически было основным слабым местом Java, IMO. Существует множество способов отображения ограниченной разметки, но лишь немногие из них предлагают полнофункциональные возможности HTML. Ранее упомянутый компонент JDIC является одним из вариантов, однако он считается «тяжеловесным» компонентом и поэтому не всегда хорошо интегрируется с приложениями Swing.

Однако я надеюсь, что новый проект JWebPane на основе Webkit предоставит более продвинутые возможности без всех проблем, с которыми нам приходилось иметь дело в прошлом. И, конечно же, есть несколько коммерческих вариантов (например, IceBrowser).

На днях наткнулся на веб-браузер java Лобо.

Lobo is being actively developed with the aim to fully support HTML 4, Javascript and CSS2.

У меня нет опыта работы с этим, но подумал, что это может подойти вам.

Хорошее чистое Java-решение - JWebEngine. Он очень хорошо отображает HTML 4.

Его коммерческая лицензия составляет около 2000 долларов США.

Paolo Fulgoni 19.06.2014 14:35

Я только что использовал SwingBox для отображения довольно простой HTML-страницы с хорошими результатами.

Проект включает простое демонстрационное приложение, которое сравнивает его компонент BrowserPane с JEditorPane, показывая гораздо лучший результат на сложных страницах (но все же не сравнимый с современным веб-браузером).

Единственная проблема, с которой я столкнулся, - это нежелательные полосы прокрутки от оболочки JScrollPane. У демонстрационного приложения похоже та же проблема. Я не могу сказать, где возникла проблема. Пользуюсь версией 1.0.

Вот фрагмент кода, показывающий, насколько просто использовать компонент:

BrowserPane browserPane = new BrowserPane();
JScrollPane scrollPane = new JScrollPane(browserPane);
someContainer.add(scrollPane);

browserPane.setText("<html><b>Some HTML here</b></html>");
// or...
browserPane.setPage(new URL("http://en.wikipedia.org"));

Другие вопросы по теме