Introdução ao JEditorPane

A classe JEditorPane em java é usada para exibir componentes de texto que podem manipular diferentes tipos de texto com estilo. Por padrão, ele pode lidar apenas com HTML, RTF (Plain Text e Rich Text Format). O JEditorPane está sendo usado principalmente para exibir conteúdo HTML com tags HTML básicas limitadas.

Para ter esse comportamento, esse componente usa as implementações do EditorKit. O bom é que ele se ajusta automaticamente ao tipo adequado de editor de texto para qualquer tipo de conteúdo fornecido. O EditorKit atualmente instalado é usado para determinar o conteúdo ao qual o editor está vinculado a qualquer momento. Por exemplo, se o conteúdo de um componente estiver definido como um novo URL, seu tipo será usado para determinar o EditorKit que deve ser pré-instalado para carregar o conteúdo.

Sintaxe:

public class JEditorPane extends JTextComponent

Por padrão, essa classe é pré-configurada para os três tipos de conteúdo a seguir:

  • texto / sem formatação : Texto sem formatação, que é o tipo padrão quando o conteúdo não é reconhecido. O kit usado aqui é uma extensão do DefaultEditorKit que produzirá uma exibição de texto sem formatação.
  • texto / HTML: texto HTML. O kit usado aqui é da classe javax.swing.text.html.HTMLEditorkit, que fornecerá suporte até HTML (versão 3.2).
  • texto / RTF: texto RTF. O kit usado aqui é a classe javax.swing.text.rtf.RTFEditorkit, que fornecerá suporte limitado Rich Text Format.

Construtores do JEditorPane

Abaixo estão os construtores do JEditorPane:

  1. JEditorPane (): esse tipo de construtor simplesmente criará um novo JEditorPane.
  2. JEditorPane (URL da string): esse tipo de construtor criará um JEditorPane com base na string no parâmetro que contém as especificações da URL.
  3. JEditorPane (página inicial da URL): este construtor criará o JEditorPane com base na URL especificada no parâmetro de entrada.
  4. JEditorPane (tipo String, texto String): esse construtor criará um JEditorPane que foi inicializado com o texto fornecido no parâmetro.

Alguns métodos úteis da classe JEditoPane

A seguir, o método a seguir:

  1. void setText (texto da string): este método definirá o texto do componente com o texto especificado fornecido na entrada, que deve estar no mesmo tipo de conteúdo do editor.
  2. Void getText (): este método retornará o texto do componente dentro do tipo de conteúdo especificado do editor.
  3. Void setPage (página URL): este método acionará o JEditorPane para mostrar o URL especificado como a página atual.
  4. Void setContentType (tipo String): este método é usado para definir o tipo de conteúdo que o editor pode manipular.
  5. Anular addHyperlinkListener (ouvinte de HyperlinkListener): este método adicionará um ouvinte de hiperlink ao componente, o que ajudará a notificar sempre que um link ou hiperlink for clicado ou selecionado.

Exemplo de classe JEditorPane

Abaixo estão os exemplos do JEditorPane:

Aqui neste exemplo, criaremos um leitor de páginas da web usando o JEditorPane em java. Também não podemos considerá-lo um navegador da Web, pois o JEditorPane só pode usar para mostrar conteúdo HTML e não pode mostrar nenhum CSS ou qualquer outro conteúdo de estilo, mas ainda assim algumas páginas da Web com conteúdo HTML podem ser acessadas por exemplo, assim como também abra qualquer arquivo HTML que tenha sido salvo no PC local.

Aqui, para criar um visualizador de páginas da web, primeiro criaremos um painel do editor para mostrar o conteúdo HTML e, em seguida, criaremos um JTextfield que será usado para preencher a URL e um JButton que será usado para pesquisar a URL na web. Adicione uma ação ao botão e ao ouvinte de hiperlink que possa ser usado para qualquer hiperlink na página HTML. No final, adicione todos os componentes ao painel e o painel ao conjunto de quadros, o tamanho do quadro e também torne a página da Web como somente leitura, para que nenhuma alteração possa ser feita usando o 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();
)
)
)

Resultado:

Conclusão

A classe JEditorPane pode ser usada para exibir HTML normal, conteúdo em formato Rich Text ou texto sem formatação com um pouco de estilo. A classe JEditorPane fornece uma vantagem sobre o JTextPanes para fornecer componente de texto, pois a classe JEditorPane fornece construtores para inicializar o painel do editor de uma URL, enquanto o JTextPane não possui esses contratados.

Artigos recomendados

Este é um guia para o JEditorPane. Aqui discutimos construtores, métodos e exemplos no JEditorPane. Você também pode consultar nossos outros artigos relacionados para saber mais -

  1. Editores Python
  2. JScrollPane em Java
  3. JTextField em Java
  4. Introdução ao JPanel em Java
  5. JFrame em Java