Introducción a JEditorPane

La clase JEditorPane en java se usa para mostrar componentes de texto que pueden manejar diferentes tipos de texto con estilo. Por defecto, solo puede manejar HTML, formato de texto plano y enriquecido (RTF). JEditorPane se utiliza principalmente para mostrar contenido HTML con etiquetas HTML básicas limitadas.

Para tener este comportamiento, este componente utiliza las implementaciones del EditorKit. Lo bueno es que se ajusta automáticamente al tipo de editor de texto adecuado para el tipo de contenido que se proporciona. El EditorKit que está instalado actualmente se utiliza para determinar el contenido al que está vinculado el editor en un momento dado. Por ejemplo, si el contenido de un componente se establece en una nueva URL, su tipo se usa para determinar el EditorKit que se debe preinstalar para cargar el contenido.

Sintaxis:

public class JEditorPane extends JTextComponent

Por defecto, esta clase está preconfigurada para los siguientes tres tipos de contenido:

  • text / plain: Texto sin formato, que es el tipo predeterminado cuando no se reconoce el contenido. El kit utilizado aquí es una extensión de DefaultEditorKit que producirá una vista de texto plano envuelto.
  • texto / HTML: texto HTML. El kit utilizado aquí es la clase javax.swing.text.html.HTMLEditorkit que proporcionará soporte hasta HTML (ver. 3.2).
  • texto / RTF: Texto RTF. El kit utilizado aquí es la clase javax.swing.text.rtf.RTFEditorkit que proporcionará compatibilidad limitada con el formato de texto enriquecido.

Constructores de JEditorPane

A continuación se muestran los constructores de JEditorPane:

  1. JEditorPane (): este tipo de constructor simplemente creará un nuevo JEditorPane.
  2. JEditorPane (URL de cadena): este tipo de constructor creará un JEditorPane basado en la cadena en el parámetro que contiene las especificaciones de URL.
  3. JEditorPane (página inicial de URL): este constructor creará el JEditorPane basado en la URL especificada en el parámetro de entrada.
  4. JEditorPane (tipo de cadena, texto de cadena): este constructor creará un JEditorPane que se ha inicializado en el texto proporcionado dentro del parámetro.

Algunos métodos útiles de la clase JEditoPane

Los siguientes son los siguientes métodos:

  1. void setText (texto de cadena): este método establecerá el texto del componente con el texto especificado dado en la entrada, que se espera que esté en el mismo tipo de contenido que el editor.
  2. Void getText (): este método devolverá el texto del componente dentro del tipo de contenido especificado del editor.
  3. SetPage vacío (página URL): este método activará el JEditorPane para mostrar la URL especificada como la página actual.
  4. SetContentType (tipo de cadena) vacío: este método se utiliza para establecer el tipo de contenido que el editor puede manejar.
  5. Void addHyperlinkListener (escucha de HyperlinkListener): este método agregará una escucha de hipervínculo al componente que ayudará a notificar cada vez que se haga clic o seleccione un enlace o hipervínculo.

Ejemplo de clase JEditorPane

A continuación se muestran los ejemplos de JEditorPane:

Aquí, en este ejemplo, crearemos un lector de páginas web utilizando JEditorPane en java. Tampoco podemos considerarlo como un navegador web, ya que JEditorPane solo puede usar para mostrar contenido HTML y no puede mostrar ningún CSS u otro contenido de estilo, pero aún se puede acceder a algunas páginas web con contenido HTML a través del ejemplo, así como también abra cualquier archivo HTML que haya guardado en la PC local.

Aquí para crear un visor de páginas web, primero crearemos un panel de editor para mostrar el contenido HTML y luego crearemos un JTextfield que se usará para completar la URL y un JButton que se usará para buscar la URL en la web. Agregue una acción al botón y al oyente de hipervínculo que se puede usar para cualquier hipervínculo en la página HTML. Al final, agregue todos los componentes al panel y el panel al conjunto de marcos del tamaño del marco y también haga que la página web sea de solo lectura para que no se puedan realizar cambios utilizando el método setEditable como False.

Código:

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

Salida:

Conclusión

La clase JEditorPane se puede usar para mostrar HTML normal, contenido de formato de texto enriquecido o texto sin formato con un poco de estilo. La clase JEditorPane proporciona una ventaja sobre JTextPanes para proporcionar un componente de texto, ya que la clase JEditorPane le proporciona a los constructores para inicializar el panel del editor desde una URL, mientras que JTextPane no tiene dichos contratistas.

Artículos recomendados

Esta es una guía para JEditorPane. Aquí discutimos constructores, métodos y ejemplos en JEditorPane. También puede consultar nuestros otros artículos relacionados para obtener más información:

  1. Editores de Python
  2. JScrollPane en Java
  3. JTextField en Java
  4. Introducción a JPanel en Java
  5. JFrame en Java