Introduzione a JEditorPane

La classe JEditorPane in java viene utilizzata per visualizzare componenti di testo in grado di gestire diversi tipi di testo con stile. Per impostazione predefinita, può gestire solo HTML, formato RTF (plain text e RTF). JEditorPane viene utilizzato principalmente per visualizzare contenuti HTML con tag HTML di base limitati.

Per avere questo comportamento, questo componente utilizza le implementazioni di EditorKit. Il bello è che si adatta automaticamente al giusto tipo di editor di testo per qualunque tipo di contenuto venga fornito. L'EditorKit attualmente installato viene utilizzato per determinare il contenuto a cui è legato l'editor in qualsiasi momento. Ad esempio, se il contenuto di un componente è impostato su un nuovo URL, il suo tipo viene utilizzato per determinare l'EditorKit che deve essere preinstallato per caricare il contenuto.

Sintassi:

public class JEditorPane extends JTextComponent

Per impostazione predefinita, questa classe è preconfigurata per i seguenti tre tipi di contenuto:

  • text / plain: Testo normale, che è il tipo predefinito quando il contenuto non viene riconosciuto. Il kit usato qui è un'estensione di DefaultEditorKit che produrrà una vista di testo in chiaro.
  • testo / HTML: testo HTML. Il kit utilizzato qui è la classe javax.swing.text.html.HTMLEditorkit che fornirà supporto fino all'HTML (versione 3.2).
  • testo / RTF: testo RTF. Il kit utilizzato qui è la classe javax.swing.text.rtf.RTFEditorkit che fornirà supporto Rich Format in formato limitato.

Costruttori di JEditorPane

Di seguito sono riportati i costruttori di JEditorPane:

  1. JEditorPane (): questo tipo di costruttore creerà semplicemente un nuovo JEditorPane.
  2. JEditorPane (URL stringa): questo tipo di costruttore creerà un JEditorPane basato sulla stringa nel parametro contenente le specifiche URL.
  3. JEditorPane (pagina iniziale dell'URL): questo costruttore creerà JEditorPane in base all'URL specificato nel parametro di input.
  4. JEditorPane (tipo di stringa, testo di stringa): questo costruttore creerà un JEditorPane che è stato inizializzato sul testo fornito all'interno del parametro.

Alcuni metodi utili della classe JEditoPane

Di seguito sono riportati i metodi seguenti:

  1. void setText (String text): questo metodo imposterà il testo del componente con il testo specificato indicato nell'input, che dovrebbe essere nello stesso tipo di contenuto dell'editor.
  2. Void getText (): questo metodo restituirà il testo del componente all'interno del tipo di contenuto specificato dell'editor.
  3. Void setPage (pagina URL): questo metodo attiverà JEditorPane per mostrare l'URL specificato come pagina corrente.
  4. Void setContentType (tipo stringa): questo metodo viene utilizzato per impostare il tipo di contenuto che l'editor può gestire.
  5. Void addHyperlinkListener (listener HyperlinkListener): questo metodo aggiungerà un listener hyperlink al componente che aiuterà a notificare ogni volta che si fa clic o si seleziona un collegamento o hyperlink.

Esempio di classe JEditorPane

Di seguito sono riportati gli esempi di JEditorPane:

Qui in questo esempio, creeremo un lettore di pagine Web usando JEditorPane in Java. Non possiamo anche considerarlo come un browser Web poiché JEditorPane può solo utilizzare per mostrare contenuto HTML e non può mostrare alcun CSS o qualsiasi altro contenuto di stile, ma è comunque possibile accedere ad alcune pagine Web con contenuto HTML tramite l'esempio e anche noi aprire qualsiasi file HTML salvato sul PC locale.

Qui per creare un visualizzatore di pagine Web, creeremo prima un riquadro dell'editor per mostrare il contenuto HTML, quindi creeremo un JTextfield che verrà utilizzato per riempire l'URL e un JButton che viene utilizzato per cercare l'URL sul Web. Aggiungi un'azione al listener di pulsanti e collegamenti ipertestuali che può essere utilizzato per qualsiasi collegamento ipertestuale nella pagina HTML. Alla fine, aggiungi tutti i componenti al pannello e il pannello al set di frame della dimensione del frame e rendi la pagina Web di sola lettura in modo che non sia possibile apportare modifiche utilizzando il metodo setEditable come False.

Codice:

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

Produzione:

Conclusione

La classe JEditorPane può essere utilizzata per visualizzare HTML normale, contenuto in formato Rich Text o testo normale con un po 'di stile. La classe JEditorPane fornisce un vantaggio rispetto a JTextPanes per fornire componenti di testo poiché la classe JEditorPane fornisce costruttori per inizializzare il riquadro dell'editor da un URL mentre JTextPane non ha tali appaltatori.

Articoli consigliati

Questa è una guida a JEditorPane. Qui discutiamo di costruttori, metodi ed esempi in JEditorPane. Puoi anche consultare i nostri altri articoli correlati per saperne di più -

  1. Redattori di Python
  2. JScrollPane in Java
  3. JTextField in Java
  4. Introduzione a JPanel in Java
  5. JFrame in Java

Categoria: