Создание браузера в Java
Обновлено: 21.11.2024
Два предыдущих примера показали нам мощные компоненты JTable и JTree. Третий мощный компонент Swing — это javax.swing.text.JTextComponent и его различные подклассы, которые включают JTextField, JTextArea и JEditorPane. JEditorPane — особенно интересный компонент, который упрощает отображение (или редактирование) HTML-текста.
Кроме того, здесь стоит отметить, что вам не нужно создавать JEditorPane для отображения статического текста HTML. В Java 1.2.2 и более поздних версиях JLabel , JButton и другие подобные компоненты могут отображать многострочные HTML-метки с несколькими шрифтами. Хитрость заключается в том, чтобы начать метку со строки " ". Это говорит компоненту обрабатывать остальную часть строки метки как форматированный текст HTML и отображать его (используя внутренний JTextComponent ) таким образом. Вы можете поэкспериментировать с этой функцией, используя программу ShowBean; используйте его для создания компонента JButton и задайте для свойства text значение, начинающееся с " ".
Рисунок 11-18. Компонент веб-браузера
Пример 11-21 предназначен для демонстрации возможностей компонента JEditorPane. Правда, однако, в том, что использование JEditorPane весьма тривиально: просто передайте URL-адрес методу setPage() или строку HTML-текста методу setText(). Итак, когда вы изучаете код для этого примера, не уделяйте слишком много внимания JEditorPane. Вместо этого вам следует взглянуть на WebBrowser как на пример объединения многих компонентов Swing и методов программирования для создания довольно существенного графического интерфейса. Интересные моменты включают включение и отключение объектов Action и использование компонента JFileChooser. В примере также используется JLabel в качестве строки сообщения приложения с javax.swing.Timer, который выполняет простую текстовую анимацию в этой строке сообщения.
Еще одна вещь, которую следует отметить в этом примере, это то, что он демонстрирует несколько других классов-примеров, которые будут разработаны позже в этой главе. GUIResourceBundle, разработанный в примере 11.22, является основным. Этот класс позволяет считывать общие ресурсы графического интерфейса (например, цвета и шрифты) из текстовых описаний, хранящихся в файле свойств, что позволяет настраивать и локализовать ресурсы. Когда GUIResourceBundle расширяется реализациями ResourceParser, он может анализировать более сложные «ресурсы», такие как целые компоненты JMenuBar и JToolBar. WebBrowser откладывает создание своих меню и панелей инструментов до GUIResourceBundle .
Класс WebBrowser использует внешний вид Metal по умолчанию, но позволяет пользователю выбрать «тему» (комбинацию цвета и шрифта) для использования в этом внешнем виде. Эта функциональность обеспечивается классом ThemeManager, разработанным в примере 11.28.
Сегодня мы рассмотрим, как создать очень простой веб-браузер, который загружает основные элементы веб-сайта, а также использовать среду для обсуждения JEditorPane и прослушивателей гиперссылок.
Панель JEditorPane
JEditorPane — это текстовый компонент, который может обрабатывать различный текст со стилем.
По умолчанию он может обрабатывать обычный текст, HTML и форматированный текст (RTF).
JEditorPane в основном используется для отображения документа HTML только с основными элементами HTML.
Прослушиватель гиперссылок — это интерфейс прослушивателя, который отслеживает события, происходящие в ссылках.
Он имеет единственный метод hyperlinkUpdate, который должен быть реализован при использовании.
Синтаксис реализации метода
В этом руководстве мы создадим два класса:
Класс webBrowser: мы создадим объекты JTextField и JEditorPane, которые будут служить адресным полем и окном.
Пользователь вводит URL-адрес в поле адреса и нажимает кнопку ввода, и программа направляет пользователя на веб-сайт, отображая содержимое в окне.
Класс webMain: содержит основной метод для выполнения инструкций.
В этом руководстве предполагается, что пользователь следует предыдущим руководствам и знаком с используемыми в них терминами кодирования, а также имеет базовые знания в области программирования на языке Java.
Класс веб-браузера
главный веб-класс
Вывод
Приведенный выше код создает объект JTextField, который будет служить адресным полем, в которое пользователь вводит URL-адрес. У него есть сообщение по умолчанию: «Введите URL!»
С объектом связан интерфейс ActionListener для обнаружения события, когда пользователь нажимает кнопку «Ввод». Реализован метод actionPerformed.
loadSite() — это метод, который будет создан позже в программе. Он будет содержать инструкции, которые будут отображать содержимое веб-сайта на экране при передаче ему URL-адреса.
Затем объект добавляется на экран.
Этот код создает объект JEditorPane с именем «окно». Поскольку в этом окне будет отображаться содержимое веб-страницы, используется метод .setEditable(false), чтобы сделать содержимое недоступным для редактирования.
Прослушиватель гиперссылок связан с окном. Это связано с тем, что содержимое окна может содержать ссылки, и пользователь может щелкнуть эти ссылки.
Реализован метод hyperlinkUpdate прослушивателя гиперссылок.
Приведенный выше оператор if интерпретируется следующим образом: если тип события совпадает с типом события гиперссылки; просто означает «если ссылка нажата», вызывается метод loadSite, который отображает веб-страницу, на которую нажата ссылка.
Объект добавляется в компонент JScrollPane и добавляется в центр экрана.
Метод loadSite создан.
Этот метод содержит инструкции, которые позволяют отображать содержимое веб-страницы на экране. Метод принимает строковый аргумент, который является URL-адресом.
Инструкция try-catch используется для обработки исключений для событий, когда пользователь вводит неправильный URL-адрес.
Встроенный метод .setPage() автоматически считывает HTML-файл введенного URL-адреса и отображает содержимое веб-страницы на экране. Это самый важный фрагмент кода в этой программе, без него веб-страница не будет отображаться.
Текст в поле адреса также задается URL-адресом веб-страницы.
Инструкция catch для обработки исключений отображает на экране сообщение о том, что пользователь вводит недопустимый URL-адрес.
Основной класс, содержащий основной метод с инструкциями по работе программы.
Создается объект класса Slider. Класс ползунка содержит инструкции по запуску программы.
Режим выхода программы установлен. Это закроет программу, когда пользователь нажмет кнопку «X» на фрейме.
Размер окна устанавливается с помощью встроенных методов .setSize
Настройка видимости установлена, делая рамку видимой, используется код .setVisible(true).
При запуске программы пользователь может ввести любой URL-адрес, и программа перенаправит на веб-сайт.
Исходные коды из аккаунта GitHub.
Вы можете получить коды в моей учетной записи GitHub, если хотите попробовать это самостоятельно.
Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Подробнее о двунаправленных символах Юникода
import java .awt.* ; |
импорт java.awt.event.* ; |
импорт javax.swing.* ;< /td> |
импорт javax.swing.event.* ; |
импорт javax.swing.text.html.* ; |
открытый класс SwingHTMLBrowser расширяет JFrame, реализует ActionListener , HyperlinkListener |
private JTextField addressBar; |
private JEditorPane панель; |
SwingHTMLBrowser() |
super("Swing HTML Browser"); |
addressBar = new JTextField (); |
addressBar . addActionListener( this ); |
pane = new JEditorPane(); |
pane . setEditable(false); |
pane. addHyperlinkListener(this); |
add(addressBar, BorderLayout. NORTH); |
add(new JScrollPane (pane)) ; |
setSize( новое измерение ( 400 , 400 )); |
> | public void actionPerformed ( ActionEvent evt ) |
String url = addressBar . getText(); |
попробовать |
pane . setPage(url); |
> catch ( Throwable t) |
t . printStackTrace(); |
> |
> |
public void hyperlinkUpdate ( HyperlinkEvent evt ) |
if (evt . getEventType() != HyperlinkEvent . EventType .АКТИВИРОВАНО ) |
return ; |
> |
JEditorPane srcPane = ( JEditorPane )evt . getSource(); |
if (evt instanceof HTMLFrameHyperlinkEvent) |
HTMLDocument doc = (HTMLDocument)pane. getDocument(); |
doc . processHTMLFrameHyperlinkEvent(( HTMLFrameHyperlinkEvent )evt); |
> else |
String url = evt . получитьURL() . toString(); |
addressBar . setText(url); |
попробовать |
pane . setPage(url); |
> catch ( Throwable t) |
t . printStackTrace(); |
> |
> |
>< /td> |
public static void main ( String args []) |
SwingHTMLBrowser browser = new SwingHTMLBrowser(); | браузер. setVisible(true); |
> |
> |
Вы не можете выполнить это действие в данный момент.
Вы вошли в другую вкладку или окно. Перезагрузите, чтобы обновить сеанс. Вы вышли на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс.
В этом уроке мы увидим, как создать простой веб-браузер. Он содержит адресную строку, в которой пользователь может ввести адрес, и кнопку перехода, при нажатии на которую загружается веб-страница. Для отображения веб-страниц нам требуется панель JEditor, а HyperlinkListener должен реагировать, когда пользователь щелкает ссылку в документе. Ниже приведены шаги для создания веб-браузера. Шаг 1: Определение конструктора класса Основной класс расширяет JPanel. Сначала мы установим цвет фона и макет как Border Layout и установим для него границу следующим образом.
Панель прокрутки добавляется на панель редактирования, и в этом классе регистрируется прослушиватель гиперссылок. Панель редактирования размещается в центре панели.
Затем создается панель инструментов, которая добавляется к северу от панели. На эту панель инструментов добавлены метка, текстовое поле для ввода местоположения и кнопка перехода. Прослушиватель действий добавлен к кнопке «Перейти» и полю ввода местоположения для загрузки URL-адреса.
Шаг 2: Реализация прослушивателя гиперссылок Прослушиватель гиперссылок содержит единственную функцию, называемую hyperlinkUpdate(), которая определяется следующим образом. Если щелкнуть гиперссылку, URL-адрес этой гиперссылки загружается в область редактирования с помощью вызова метода loadURL().
Шаг 3. Определение метода loadURL() Он загружает документ по указанному URL-адресу в область редактирования. блок try catch используется для обработки ошибок, если они возникли при изменении содержимого панели редактирования. Метод setPage() JEditPane используется для установки содержимого панели редактирования.
Шаг 4: ActionListener для кнопки «Перейти» и поля ввода «Местоположение» Здесь данные поля ввода местоположения сохраняются в строковой переменной и проверяются, является ли их формат правильным или неправильным. Если формат правильный, создается URL-адрес и вызывается метод loadURL() для загрузки этого URL-адреса, в противном случае отображается подходящее сообщение.
Шаг 5: main() для определения различных свойств фрейма. Создается фрейм, и объект основного класса (SimpleWebBrowser) устанавливается как содержимое фрейма, так как это панель. Расположение кадра центрируется с помощью Toolkit следующим образом.
Читайте также: