Введение в JEditorPane

JEditorPane класс в Java используется для отображения текстовых компонентов, которые могут обрабатывать различные типы текста со стилем. По умолчанию он может обрабатывать только HTML, обычный и Rich Text Format (RTF). JEditorPane в основном используется для отображения содержимого HTML с ограниченными базовыми тегами HTML.

Чтобы иметь такое поведение, этот компонент использует реализации EditorKit. Прелесть в том, что он автоматически подстраивается под правильный тип текстового редактора для любого типа контента, который предоставляется. Установленный в настоящее время EditorKit используется для определения содержимого, с которым связан редактор в любой момент времени. Например, если для содержимого компонента задан новый URL-адрес, его тип используется для определения EditorKit, который должен быть предварительно установлен для загрузки содержимого.

Синтаксис:

public class JEditorPane extends JTextComponent

По умолчанию этот класс предварительно настроен на следующие три типа контента:

  • text / plain: обычный текст, который является типом по умолчанию, когда содержимое не распознается. Используемый здесь набор является расширением DefaultEditorKit, которое будет создавать представление в виде простого текста.
  • текст / HTML: текст HTML. Используемый здесь набор - это класс javax.swing.text.html.HTMLEditorkit, который будет обеспечивать поддержку до HTML (версия 3.2).
  • текст / RTF: текст RTF. Используемый здесь набор - это класс javax.swing.text.rtf.RTFEditorkit, который обеспечивает ограниченную поддержку Rich Text Format.

Конструкторы JEditorPane

Ниже приведены конструкторы JEditorPane:

  1. JEditorPane (): этот тип конструктора просто создаст новый JEditorPane.
  2. JEditorPane (String URL): этот тип конструктора создаст JEditorPane на основе строки в параметре, содержащем спецификации URL.
  3. JEditorPane (начальная страница URL): этот конструктор создаст JEditorPane на основе указанного URL во входном параметре.
  4. JEditorPane (String type, String text): этот конструктор создаст JEditorPane, который был инициализирован для текста, заданного в параметре.

Некоторые полезные методы класса JEditoPane

Ниже приводится методика:

  1. void setText (String text): этот метод устанавливает текст компонента с указанным текстом, заданным во входных данных, который, как ожидается, будет иметь тот же тип содержимого, что и редактор.
  2. Void getText (): этот метод возвращает текст компонента в указанном типе содержимого редактора.
  3. Void setPage (страница URL): этот метод заставит JEditorPane показывать указанный URL как текущую страницу.
  4. Void setContentType (String type): этот метод используется для установки типа содержимого, которое может обрабатывать редактор.
  5. Void addHyperlinkListener (слушатель HyperlinkListener): этот метод добавит слушатель гиперссылки к компоненту, который поможет уведомлять о каждом щелчке или выборе ссылки или гиперссылки.

Пример класса JEditorPane

Ниже приведены примеры JEditorPane:

Здесь, в этом примере, мы создадим средство чтения веб-страниц, используя JEditorPane в Java. Мы также не можем рассматривать его как веб-браузер, поскольку JEditorPane может использовать только для отображения содержимого HTML, и он не может отображать любой CSS или любой другой стиль, но все же некоторые веб-страницы с таким содержимым HTML могут быть доступны через пример, также как и мы. Откройте любой файл HTML, сохраненный на локальном ПК.

Здесь, чтобы создать средство просмотра веб-страниц, мы сначала создадим панель редактора для отображения содержимого HTML, затем создадим поле JText, которое будет использоваться для заполнения URL-адреса, и JButton, который будет использоваться для поиска URL-адреса в Интернете. Добавьте к кнопке и слушателю гиперссылки действие, которое можно использовать для любой гиперссылки на странице HTML. В конце добавьте все компоненты панели и панели в набор фреймов размером фрейма, а также сделайте веб-страницу доступной только для чтения, чтобы никакие изменения не могли быть выполнены с помощью метода setEditable в качестве False.

Код:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import java.net.MalformedURLException;// Thrown when a URL doesn't contain http://
import java.net.URL;
import javax.swing.JButton;
import javax.swing.event.HyperlinkEvent;// Provides information on events triggered
import javax.swing.event.HyperlinkListener;// Monitors user activity with links
public class JEditorPaneExample extends JFrame implements HyperlinkListener, ActionListener (
public static void main(String() args) (
new JEditorPaneExample("http://www.google.com");
)
String defaultURL;
JPanel panel = new JPanel();
JTextField theURL = new JTextField(25);
JButton search = new JButton("Search");
JEditorPane htmlPage;
public JEditorPaneExample(String defaultURL) (
JFrame frame = new JFrame("Java Browser");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.defaultURL = defaultURL;
// If the user interacts with the JButton then actionPerformed method is called
search.addActionListener(this);
// Set the default text in the JTextField
theURL.setText(defaultURL);
// Add the text field to a panel
panel.add(theURL);
panel.add(search);
// Add the panel to the northern quadrant of a frame
frame.add(panel, BorderLayout.NORTH);
try (
htmlPage = new JEditorPane(defaultURL);
// If the user interacts with the JEditorPane actions are triggered.
htmlPage.addHyperlinkListener(this);
// Display webpage in read-only mode
htmlPage.setEditable(false);
JScrollPane scroller = new JScrollPane(htmlPage);
// Add Scroll pane and JEditorPane to the frame
frame.add(scroller, BorderLayout.CENTER);
)
// If something goes wrong with locating the html page this will handle that error
catch (IOException e) (
e.printStackTrace();
)
frame.setSize(1200, 800);
frame.setVisible(true);
)
public void hyperlinkUpdate(HyperlinkEvent e) (
// Checks if the link was clicked
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) (
try (
// Set the URL to be displayed
htmlPage.setPage(e.getURL());
// toExternalForm creates a String representation of the URL
theURL.setText(e.getURL().toExternalForm());
)
catch (IOException e1) (
e1.printStackTrace();
)
)
)
public void actionPerformed(ActionEvent e) (
String pageURL = "";
if (e.getSource() == search) (
pageURL = theURL.getText();
)
else (
pageURL = defaultURL;
// Opens an alert box when there is an error
JOptionPane.showMessageDialog(JEditorPaneExample.this,
"Please Enter a Web Address", "Error",
JOptionPane.ERROR_MESSAGE);
)
try (
// Sets the URL to be displayed
htmlPage.setPage(new URL(pageURL));
theURL.setText(pageURL);
) catch (MalformedURLException e2) (
JOptionPane.showMessageDialog(JEditorPaneExample.this,
"Please use http://", "Error",
JOptionPane.ERROR_MESSAGE);
) catch (IOException e1) (
e1.printStackTrace();
)
)
)

Выход:

Вывод

Класс JEditorPane можно использовать для отображения обычного HTML, содержимого форматированного текста или обычного текста с небольшим стилем. Класс JEditorPane предоставляет преимущество над JTextPanes для предоставления текстового компонента, так как класс JEditorPane предоставляет конструкторы для инициализации панели редактора в форме URL, тогда как JTextPane не имеет таких подрядчиков.

Рекомендуемые статьи

Это руководство по JEditorPane. Здесь мы обсуждаем конструкторы, методы и примеры в JEditorPane. Вы также можете просмотреть другие наши статьи, чтобы узнать больше -

  1. Редакторы Python
  2. JScrollPane в Java
  3. JTextField в Java
  4. Введение в JPanel на Java
  5. JFrame в Java