Introduction à JEditorPane

La classe JEditorPane en java est utilisée pour afficher les composants de texte qui peuvent gérer différents types de texte avec style. Par défaut, il ne peut gérer que le HTML, le format RTF et le format RTF. JEditorPane est principalement utilisé pour afficher du contenu HTML avec des balises HTML de base limitées.

Pour avoir ce comportement, ce composant utilise les implémentations de EditorKit. La beauté est qu'il s'adapte automatiquement au type d'éditeur de texte approprié pour le type de contenu fourni. Le EditorKit actuellement installé est utilisé pour déterminer le contenu auquel l'éditeur est lié à un moment donné. Par exemple, si le contenu d'un composant est défini sur une nouvelle URL, son type est utilisé pour déterminer le EditorKit qui doit être préinstallé pour charger le contenu.

Syntaxe:

public class JEditorPane extends JTextComponent

Par défaut, cette classe est préconfigurée pour les trois types de contenu suivants:

  • text / plain: Texte brut, qui est le type par défaut lorsque le contenu n'est pas reconnu. Le kit utilisé ici est une extension de DefaultEditorKit qui produira une vue en texte brut encapsulée.
  • texte / HTML: Texte HTML. Le kit utilisé ici est la classe javax.swing.text.html.HTMLEditorkit qui fournira un support jusqu'au HTML (ver. 3.2).
  • text / RTF: Texte RTF. Le kit utilisé ici est la classe javax.swing.text.rtf.RTFEditorkit qui fournira un support limité au format RTF.

Constructeurs de JEditorPane

Voici les constructeurs de JEditorPane:

  1. JEditorPane (): ce type de constructeur crée simplement un nouveau JEditorPane.
  2. JEditorPane (String URL): ce type de constructeur créera un JEditorPane basé sur la chaîne du paramètre contenant les spécifications d'URL.
  3. JEditorPane (page initiale d'URL): ce constructeur créera le JEditorPane en fonction de l'URL spécifiée dans le paramètre d'entrée.
  4. JEditorPane (type de chaîne, texte de chaîne): ce constructeur créera un JEditorPane qui a été initialisé avec le texte donné dans le paramètre.

Quelques méthodes utiles de la classe JEditoPane

Voici la méthode suivante:

  1. void setText (String text): Cette méthode définira le texte du composant avec le texte spécifié donné dans l'entrée, qui devrait être dans le même type de contenu que celui de l'éditeur.
  2. Void getText (): Cette méthode renvoie le texte du composant dans le type de contenu spécifié de l'éditeur.
  3. Void setPage (page URL): cette méthode déclenchera le JEditorPane pour afficher l'URL spécifiée comme page actuelle.
  4. Void setContentType (String type): Cette méthode est utilisée pour définir le type de contenu que l'éditeur peut gérer.
  5. Void addHyperlinkListener (écouteur HyperlinkListener): cette méthode ajoutera un écouteur d'hyperlien au composant, ce qui aidera à notifier chaque fois qu'un lien ou un hyperlien est cliqué ou sélectionné.

Exemple de classe JEditorPane

Voici les exemples de JEditorPane:

Ici, dans cet exemple, nous allons créer un lecteur de page Web en utilisant JEditorPane en java. Nous ne pouvons pas non plus le considérer comme un navigateur Web car JEditorPane ne peut utiliser que pour afficher du contenu HTML et il ne peut pas afficher de CSS ou tout autre contenu de style, mais certaines pages Web contenant du contenu HTML sont accessibles via l'exemple ainsi que nous aussi. ouvrez n'importe quel fichier HTML enregistré sur le PC local.

Ici, afin de créer une visionneuse de page Web, nous allons d'abord créer un volet d'édition pour afficher le contenu HTML, puis créer un JTextfield qui sera utilisé pour remplir l'URL et un JButton qui sera utilisé pour rechercher l'URL sur le Web. Ajoutez une action au bouton et à l'écouteur d'hyperliens qui peut être utilisée pour n'importe quel hyperlien sur la page HTML. Au final, ajoutez tous les composants au panneau et le panneau au jeu de cadres de la taille du cadre et rendez également la page Web en lecture seule afin qu'aucune modification ne puisse être effectuée en utilisant la méthode setEditable comme False.

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

Production:

Conclusion

La classe JEditorPane peut être utilisée pour afficher du HTML normal, du contenu au format RTF ou du texte brut avec un peu de style. La classe JEditorPane fournit un avantage sur JTextPanes pour fournir un composant texte car la classe JEditorPane vous fournit des constructeurs pour initialiser le volet de l'éditeur sous forme d'URL tandis que JTextPane n'a pas de tels sous-traitants.

Articles recommandés

Ceci est un guide de JEditorPane. Ici, nous discutons des constructeurs, des méthodes et des exemples dans JEditorPane. Vous pouvez également consulter nos autres articles connexes pour en savoir plus -

  1. Éditeurs Python
  2. JScrollPane en Java
  3. JTextField en Java
  4. Introduction à JPanel en Java
  5. JFrame en Java