Вступ до JEditorPane

Клас JEditorPane в java використовується для відображення текстових компонентів, які можуть обробляти різні типи тексту зі стилем. За замовчуванням він може обробляти лише HTML, звичайний та розширений формат тексту (RTF). JEditorPane в основному використовується для відображення HTML-вмісту з обмеженими основними тегами HTML.

Щоб мати таку поведінку, цей компонент використовує реалізацію EditorKit. Краса полягає в тому, що він автоматично підлаштовується під належний вид текстового редактора для того, який тип вмісту він надається. Наразі встановлений EditorKit використовується для визначення вмісту, до якого редактор зобов'язаний в будь-який момент часу. Наприклад, якщо вміст компонента встановлений у новій URL-адресі, то його тип використовується для визначення EditorKit, який слід попередньо встановити для завантаження вмісту.

Синтаксис:

public class JEditorPane extends JTextComponent

За замовчуванням цей клас налаштовано на три типи вмісту:

  • text / plain: Простий текст, який є типовим типом, коли вміст не розпізнається. Набір, що використовується тут, є розширенням DefaultEditorKit, яке створить перетворений звичайний вид тексту.
  • text / HTML: HTML Text. Набір, що використовується тут, - клас javax.swing.text.html.HTMLEditorkit, який надасть підтримку до HTML (версія 3.2).
  • text / RTF: RTF Text. Набір, що використовується тут, - клас javax.swing.text.rtf.RTFEditorkit, який надасть обмежену підтримку формату Rich Text.

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

Нижче наведені конструктори JEditorPane:

  1. JEditorPane (): Цей тип конструктора просто створить новий JEditorPane.
  2. JEditorPane (Строкова URL): Цей тип конструктора створить JEditorPane на основі рядка в параметрі, що містить специфікації URL.
  3. JEditorPane (початкова сторінка URL): Цей конструктор створить JEditorPane на основі вказаної URL-адреси вхідного параметра.
  4. JEditorPane (тип рядка, текст рядка): Цей конструктор створить JEditorPane, який був ініціалізований до тексту, заданого в параметрі.

Деякі корисні методи класу JEditoPane

Далі наведено наступний метод:

  1. void setText (Строковий текст): Цей метод встановить текст компонента із зазначеним текстом, поданим на вході, який, як очікується, буде таким же типом вмісту, що і редактор.
  2. Недійсний getText (): Цей метод поверне текст компонента у вказаний тип вмісту редактора.
  3. Недійсна setPage (URL-адреса сторінки): Цей метод призведе JEditorPane до показу вказаної URL-адреси як поточної сторінки.
  4. Пустота setContentType (тип рядка): Цей метод використовується для встановлення типу вмісту, з яким може працювати редактор.
  5. Недійсний addHyperlinkListener (слухач HyperlinkListener): Цей метод додасть слухачеві гіперпосилання до компонента, який допоможе отримувати сповіщення про кожне натискання або вибір посилання або гіперпосилання.

Приклад класу JEditorPane

Нижче наведено приклади JEditorPane:

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

Тут для того, щоб створити програму перегляду веб-сторінок, спершу створимо панель редакторів для показу вмісту HTML, потім створимо JTextfield, який буде використаний для заповнення 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