Introducere în JEditorPane

Clasa JEditorPane din Java este utilizată pentru a afișa componente de text care pot trata diferite tipuri de text cu stil. În mod implicit, acesta poate gestiona numai formatul HTML, simplu și format de text îmbogățit (RTF). JEditorPane este utilizat în principal pentru a afișa conținut HTML cu etichete HTML de bază limitate.

Pentru a avea acest comportament, această componentă folosește implementările EditorKit. Frumusețea este că se adaptează automat la tipul adecvat de editor de text pentru orice tip de conținut este furnizat. EditorKit care este instalat în prezent este utilizat pentru a determina conținutul la care editorul este legat la un moment dat. De exemplu, dacă conținutul unei componente este setat pe o adresă URL nouă, atunci tipul acesteia este utilizat pentru a determina EditorKit care ar trebui preinstalat pentru a încărca conținutul.

Sintaxă:

public class JEditorPane extends JTextComponent

În mod implicit, această clasă este preconfigurată pentru următoarele trei tipuri de conținut:

  • text / simplu: Text simplu, care este tipul implicit atunci când conținutul nu este recunoscut. Setul folosit aici este o extensie a DefaultEditorKit care va produce o vizualizare în text simplu înfășurată.
  • text / HTML: Text HTML. Setul folosit aici este clasa javax.swing.text.html.HTMLEditorkit care va oferi asistență până la HTML (vers. 3.2).
  • text / RTF: RTF Text. Setul folosit aici este clasa javax.swing.text.rtf.RTFEditorkit, care va oferi un suport limitat de format de text Rich.

Constructorii JEditorPane

Mai jos sunt constructorii JEditorPane:

  1. JEditorPane (): Acest tip de constructor va crea pur și simplu un nou JEditorPane.
  2. JEditorPane (URL string): Acest tip de constructor va crea un JEditorPane bazat pe șirul din parametrul care conține specificațiile URL.
  3. JEditorPane (pagina inițială URL): Acest constructor va crea JEditorPane pe baza URL-ului specificat în parametrul de intrare.
  4. JEditorPane (tip String, text string): Acest constructor va crea un JEditorPane care a fost inițializat la textul dat în parametru.

Câteva metode utile din clasa JEditoPane

Urmează metoda următoare:

  1. void setText (String text): Această metodă va seta textul componentei cu textul specificat din intrare, care este de așteptat să fie în același tip de conținut ca al editorului.
  2. Void getText (): această metodă va returna textul componentei în cadrul tipului de conținut specificat al editorului.
  3. Void setPage (pagina URL): această metodă va declanșa JEditorPane pentru a afișa adresa URL specificată ca pagina curentă.
  4. Void setContentType (tip String): Această metodă este utilizată pentru a stabili tipul de conținut pe care editorul îl poate gestiona.
  5. Void addHyperlinkListener (ascultător HyperlinkListener): această metodă va adăuga un ascultător de hiperlink la componenta care va ajuta să notificați ori de câte ori un link sau un hyperlink este făcut clic sau selectat.

Exemplu de clasa JEditorPane

Mai jos sunt exemplele JEditorPane:

Aici, în acest exemplu, vom crea un cititor de pagini web folosind JEditorPane în Java. Nu îl putem considera de asemenea un browser web, deoarece JEditorPane poate folosi doar pentru a afișa conținut HTML și nu poate afișa CSS sau orice alt conținut de stil, dar totuși unele pagini web cu conținut HTML pot fi accesate prin intermediul exemplului, precum și noi deschideți orice fișier HTML salvat pe computerul local.

Peste aici, pentru a construi un vizualizator de pagini web, vom crea mai întâi un panou editor pentru a afișa conținutul HTML, apoi vom crea un JTextfield care va fi utilizat pentru a completa URL-ul și un JButton care este folosit pentru a căuta URL pe web. Adăugați o acțiune la butonul și ascultătorul de hiperlink care poate fi utilizat pentru orice hyperlink din pagina HTML. La final, adăugați toate componentele pe panou și pe panou la dimensiunea cadrului și, de asemenea, faceți pagina web ca doar citită, astfel încât să nu se poată face modificări folosind metoda setEditable ca False.

Cod:

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

ieşire:

Concluzie

Clasa JEditorPane poate fi utilizată pentru a afișa HTML normal, conținut format de text bogat sau text simplu cu un pic de stil. Clasa JEditorPane oferă un avantaj peste JTextPanes pentru furnizarea componentei de text, deoarece clasa JEditorPane vă oferă constructori pentru a inițializa panoul editor formând o adresă URL, în timp ce JTextPane nu are astfel de contractanți.

Articole recomandate

Acesta este un ghid pentru JEditorPane. Aici discutăm constructori, metode și exemple din JEditorPane. Puteți parcurge și alte articole conexe pentru a afla mai multe -

  1. Python Editors
  2. JScrollPane în Java
  3. JTextField în Java
  4. Introducere în JPanel în Java
  5. JFrame în Java