Inleiding tot JEditorPane

De klasse JEditorPane in Java wordt gebruikt om tekstcomponenten weer te geven die verschillende soorten tekst met stijl kunnen verwerken. Standaard kan het alleen HTML, gewoon en Rich Text Format (RTF) aan. JEditorPane wordt voornamelijk gebruikt om HTML-inhoud met beperkte eenvoudige HTML-tags weer te geven.

Om dit gedrag te hebben, gebruikt deze component de implementaties van de EditorKit. Het mooie is dat het zich automatisch aanpast aan het juiste soort teksteditor voor elke soort inhoud die wordt aangeboden. De EditorKit die momenteel is geïnstalleerd, wordt gebruikt om de inhoud te bepalen waaraan de editor op enig moment is gebonden. Als de inhoud van een component bijvoorbeeld is ingesteld op een nieuwe URL, wordt het type gebruikt om de EditorKit te bepalen die vooraf moet worden geïnstalleerd om de inhoud te laden.

Syntaxis:

public class JEditorPane extends JTextComponent

Standaard is deze klasse vooraf geconfigureerd op de volgende drie soorten inhoud:

  • text / plain: platte tekst, dit is het standaardtype wanneer de inhoud niet wordt herkend. De kit die hier wordt gebruikt, is een uitbreiding van DefaultEditorKit die een overzichtelijke tekstweergave oplevert.
  • tekst / HTML: HTML-tekst. De kit die hier wordt gebruikt, is klasse javax.swing.text.html.HTMLEditorkit die ondersteuning biedt tot HTML (ver. 3.2).
  • text / RTF: RTF Text. De kit die hier wordt gebruikt, is klasse javax.swing.text.rtf.RTFEditorkit die beperkte ondersteuning biedt voor Rich Text Format.

Constructeurs van JEditorPane

Hieronder staan ​​de constructeurs van JEditorPane:

  1. JEditorPane (): dit type constructor maakt eenvoudig een nieuw JEditorPane.
  2. JEditorPane (String URL): dit type constructor maakt een JEditorPane op basis van de string in de parameter met de URL-specificaties.
  3. JEditorPane (beginpagina URL): deze constructor maakt het JEditorPane op basis van de opgegeven URL in de invoerparameter.
  4. JEditorPane (Stringtype, String-tekst): deze constructor maakt een JEditorPane dat is geïnitialiseerd naar de tekst die binnen de parameter is opgegeven.

Enkele nuttige methoden van JEditoPane-klasse

De volgende methode is:

  1. void setText (String-tekst): met deze methode wordt de tekst van de component ingesteld met de opgegeven tekst in de invoer, die naar verwachting hetzelfde inhoudstype heeft als de editor.
  2. Void getText (): deze methode retourneert de tekst van de component binnen het opgegeven inhoudstype van de editor.
  3. Void setPage (URL-pagina): deze methode activeert het JEditorPane om de opgegeven URL als de huidige pagina weer te geven.
  4. Void setContentType (String type): deze methode wordt gebruikt om het type inhoud in te stellen dat de editor aankan.
  5. Void addHyperlinkListener (HyperlinkListener listener) ongeldig: met deze methode wordt een hyperlinklistener aan de component toegevoegd die helpt te melden wanneer op een link of hyperlink wordt geklikt of geselecteerd.

Voorbeeld van JEditorPane Class

Hieronder staan ​​de voorbeelden van JEditorPane:

Hier in dit voorbeeld maken we een webpagina-lezer met JEditorPane in Java. We kunnen het ook niet als een webbrowser beschouwen, omdat JEditorPane alleen HTML-inhoud kan weergeven en het kan geen CSS of andere stylinginhoud weergeven, maar toch zijn sommige webpagina's met HTML-inhoud toegankelijk via het voorbeeld, evenals wij ook open een HTML-bestand dat op de lokale pc is opgeslagen.

Hier om een ​​webpagina-viewer te bouwen, zullen we eerst een editorvenster maken om de HTML-inhoud weer te geven en vervolgens een JTextfield maken dat wordt gebruikt om de URL te vullen en een JButton die wordt gebruikt om de URL op het web te doorzoeken. Voeg een actie toe aan de knop en hyperlinklistener die kan worden gebruikt voor elke hyperlink op de HTML-pagina. Voeg uiteindelijk alle componenten aan het paneel en het paneel toe aan de frameset met de grootte van het frame en maak de webpagina ook als alleen-lezen zodat er geen wijzigingen kunnen worden aangebracht met de methode setEditable als 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();
)
)
)

Output:

Conclusie

De klasse JEditorPane kan worden gebruikt om normale HTML, Rich Text Format Content of platte tekst met een beetje styling weer te geven. De JEditorPane-klasse biedt een voorsprong op JTextPanes voor het bieden van een tekstcomponent, aangezien de JEditorPane-klasse constructeurs biedt om het editorvenster te initialiseren in een URL, terwijl JTextPane dergelijke aannemers niet heeft.

Aanbevolen artikelen

Dit is een gids voor JEditorPane. Hier bespreken we constructors, methoden en voorbeelden in JEditorPane. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie -

  1. Python-editors
  2. JScrollPane in Java
  3. JTextField in Java
  4. Inleiding tot JPanel in Java
  5. JFrame in Java