Einführung in JEditorPane

Die JEditorPane-Klasse in Java wird zum Anzeigen von Textkomponenten verwendet, die unterschiedliche Textarten mit Stil verarbeiten können. Standardmäßig können nur HTML-, Nur-Text- und Rich-Text-Format (RTF) verarbeitet werden. JEditorPane wird hauptsächlich zum Anzeigen von HTML-Inhalten mit eingeschränkten grundlegenden HTML-Tags verwendet.

Um dieses Verhalten zu erreichen, verwendet diese Komponente die Implementierungen des EditorKit. Das Schöne daran ist, dass es sich automatisch an die richtige Art von Texteditor anpasst, für welche Art von Inhalt es bereitgestellt wird. Das derzeit installierte EditorKit wird verwendet, um den Inhalt zu bestimmen, an den der Editor zu einem bestimmten Zeitpunkt gebunden ist. Wenn der Inhalt einer Komponente beispielsweise auf eine neue URL festgelegt ist, wird anhand ihres Typs das EditorKit bestimmt, das zum Laden des Inhalts vorinstalliert werden soll.

Syntax:

public class JEditorPane extends JTextComponent

Standardmäßig ist diese Klasse für die folgenden drei Inhaltstypen vorkonfiguriert:

  • text / plain: Nur-Text. Dies ist der Standardtyp, wenn der Inhalt nicht erkannt wird. Das hier verwendete Kit ist eine Erweiterung von DefaultEditorKit, mit der eine umbrochene Klartextansicht erstellt wird.
  • text / HTML: HTML-Text. Das hier verwendete Kit ist die Klasse javax.swing.text.html.HTMLEditorkit, die bis zu HTML (Version 3.2) Unterstützung bietet.
  • Text / RTF: RTF-Text. Das hier verwendete Kit ist die Klasse javax.swing.text.rtf.RTFEditorkit, die eine eingeschränkte Unterstützung für das Rich-Text-Format bietet.

Konstruktoren von JEditorPane

Nachfolgend sind die Konstruktoren von JEditorPane aufgeführt:

  1. JEditorPane (): Diese Art von Konstruktor erstellt einfach ein neues JEditorPane.
  2. JEditorPane (String URL): Dieser Konstruktortyp erstellt ein JEditorPane basierend auf dem String im Parameter, der die URL-Spezifikationen enthält.
  3. JEditorPane (URL-Startseite): Dieser Konstruktor erstellt das JEditorPane auf der Grundlage der im Eingabeparameter angegebenen URL.
  4. JEditorPane (String type, String text): Dieser Konstruktor erstellt ein JEditorPane, das mit dem im Parameter angegebenen Text initialisiert wurde.

Einige nützliche Methoden der JEditoPane-Klasse

Es folgt die Methode:

  1. void setText (String text): Mit dieser Methode wird der Text der Komponente mit dem in der Eingabe angegebenen Text festgelegt, von dem erwartet wird, dass er denselben Inhaltstyp wie der Editor aufweist.
  2. Void getText (): Diese Methode gibt den Text der Komponente im angegebenen Inhaltstyp des Editors zurück.
  3. Void setPage (URL page): Diese Methode löst aus, dass JEditorPane die angegebene URL als aktuelle Seite anzeigt.
  4. Void setContentType (String type): Mit dieser Methode wird der Inhaltstyp festgelegt, mit dem der Editor umgehen kann.
  5. Void addHyperlinkListener (HyperlinkListener-Listener): Diese Methode fügt der Komponente einen Hyperlink-Listener hinzu, der Sie benachrichtigt, wenn auf einen Link oder Hyperlink geklickt oder dieser ausgewählt wird.

Beispiel einer JEditorPane-Klasse

Unten sehen Sie die Beispiele für JEditorPane:

In diesem Beispiel erstellen wir einen Webseitenleser mit JEditorPane in Java. Wir können es auch nicht als Webbrowser betrachten, da JEditorPane nur HTML-Inhalte anzeigen kann und kein CSS oder andere Stilinhalte anzeigen kann, aber dennoch können einige Webseiten mit HTML-Inhalten über das Beispiel ebenso wie wir aufgerufen werden Öffnen Sie alle HTML-Dateien, die auf dem lokalen PC gespeichert sind.

Um hier einen Webseiten-Viewer zu erstellen, erstellen wir zunächst einen Editor-Bereich, in dem der HTML-Inhalt angezeigt wird. Anschließend erstellen wir ein JText-Feld, in das die URL eingefügt wird, und einen JButton, mit dem die URL im Web durchsucht wird. Fügen Sie der Schaltfläche und dem Hyperlink-Listener eine Aktion hinzu, die für jeden Hyperlink auf der HTML-Seite verwendet werden kann. Fügen Sie am Ende alle Komponenten zum Bedienfeld und das Bedienfeld zum Frameset mit der Größe des Frames hinzu und legen Sie fest, dass die Webseite schreibgeschützt ist, damit mit der setEditable-Methode keine Änderungen vorgenommen werden können.

Code:

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();
)
)
)

Ausgabe:

Fazit

Die JEditorPane-Klasse kann verwendet werden, um normalen HTML-, Rich-Text-Format-Inhalt oder einfachen Text mit ein wenig Stil anzuzeigen. Die JEditorPane-Klasse bietet einen Vorteil gegenüber JTextPanes für die Bereitstellung von Textkomponenten, da die JEditorPane-Klasse Konstruktoren zum Initialisieren des Editorbereichs aus einer URL bereitstellt, während JTextPane keine solchen Kontraktoren hat.

Empfohlene Artikel

Dies ist eine Anleitung zu JEditorPane. Hier diskutieren wir Konstruktoren, Methoden und Beispiele in JEditorPane. Sie können auch unsere anderen verwandten Artikel durchgehen, um mehr zu erfahren -

  1. Python-Editoren
  2. JScrollPane in Java
  3. JTextField in Java
  4. Einführung in JPanel in Java
  5. JFrame in Java