Въведение в JEditorPane

Класът JEditorPane в Java се използва за показване на текстови компоненти, които могат да обработват различни видове текст със стил. По подразбиране той може да обработва само HTML, обикновен и богат текстов формат (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, който ще осигури ограничена поддръжка на формат на богат текст.

Конструктори на 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. Невалидна setPage (URL страница): Този метод ще задейства JEditorPane да покаже посочения URL адрес като текущата страница.
  4. Void setContentType (Тип струна): Този метод се използва за задаване на типа съдържание, с което редакторът може да се справи.
  5. Невалиден addHyperlinkListener (слушател на HyperlinkListener): Този метод ще добави слушател на хипервръзка към компонента, който ще помогне да се уведомява всеки път, когато се щракне или избере връзка или хипервръзка.

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

По-долу са примерите на JEditorPane:

Тук в този пример ще създадем четец на уеб страници, използвайки JEditorPane в 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