Wprowadzenie do JEditorPane

Klasa JEditorPane w Javie służy do wyświetlania komponentów tekstowych, które mogą obsługiwać różne typy tekstu ze stylem. Domyślnie obsługuje tylko HTML, zwykły i format tekstowy (RTF). JEditorPane jest głównie używany do wyświetlania treści HTML z ograniczonymi podstawowymi znacznikami HTML.

Aby uzyskać takie zachowanie, ten komponent korzysta z implementacji EditorKit. Piękno polega na tym, że automatycznie dostosowuje się do odpowiedniego rodzaju edytora tekstów dla dowolnego rodzaju treści, które są udostępniane. EditorKit, który jest obecnie zainstalowany, służy do określania zawartości, z którą edytor jest związany w danym momencie. Na przykład, jeśli zawartość składnika jest ustawiona na nowy adres URL, wówczas jego typ jest używany do określenia zestawu EditorKit, który powinien zostać wstępnie zainstalowany w celu załadowania zawartości.

Składnia:

public class JEditorPane extends JTextComponent

Domyślnie ta klasa jest wstępnie skonfigurowana do następujących trzech typów treści:

  • tekst / zwykły: zwykły tekst, który jest domyślnym typem, gdy treść nie jest rozpoznawana. Zestaw użyty tutaj jest rozszerzeniem DefaultEditorKit, który utworzy zawinięty widok zwykłego tekstu.
  • tekst / HTML: tekst HTML. Zestaw używany tutaj to klasa javax.swing.text.html.HTMLEditorkit, który zapewni wsparcie do HTML (wer. 3.2).
  • text / RTF: RTF Text. Zestaw używany tutaj to klasa javax.swing.text.rtf.RTFEditorkit, który zapewni ograniczoną obsługę formatu Rich Text.

Konstruktory JEditorPane

Poniżej znajdują się konstruktory JEditorPane:

  1. JEditorPane (): Ten typ konstruktora po prostu utworzy nowy JEditorPane.
  2. JEditorPane (ciąg URL): Ten typ konstruktora utworzy JEditorPane na podstawie ciągu w parametrze zawierającym specyfikację adresu URL.
  3. JEditorPane (strona początkowa adresu URL): ten konstruktor utworzy JEditorPane na podstawie określonego adresu URL w parametrze wejściowym.
  4. JEditorPane (typ ciągu, tekst ciągu): ten konstruktor utworzy JEditorPane, który został zainicjowany na tekst podany w parametrze.

Kilka przydatnych metod klasy JEditoPane

Poniżej przedstawiono metodę:

  1. void setText (tekst ciągowy): Ta metoda ustawi tekst komponentu z określonym tekstem podanym na wejściu, który ma być tego samego typu co edytor.
  2. Void getText (): Ta metoda zwróci tekst komponentu w ramach określonego typu treści edytora.
  3. Void setPage (strona URL): Ta metoda spowoduje wyświetlenie przez JEditorPane określonego adresu URL jako bieżącej strony.
  4. Void setContentType (typ ciągu): Ta metoda służy do ustawiania typu zawartości, którą może obsługiwać edytor.
  5. Void addHyperlinkListener (detektor HyperlinkListener): Ta metoda doda detektor hiperłącza do komponentu, który pomoże powiadamiać o każdym kliknięciu lub wybraniu linku lub hiperłącza.

Przykład klasy JEditorPane

Poniżej znajdują się przykłady JEditorPane:

W tym przykładzie utworzymy czytnik strony internetowej za pomocą JEditorPane w java. Nie możemy również uznać tego za przeglądarkę internetową, ponieważ JEditorPane może używać tylko do wyświetlania treści HTML i nie może pokazywać żadnego CSS ani żadnej innej zawartości stylistycznej, ale nadal można uzyskać dostęp do niektórych stron internetowych zawierających treść HTML, jak również my otwórz dowolny plik HTML zapisany na komputerze lokalnym.

Tutaj, aby zbudować przeglądarkę stron internetowych, najpierw utworzymy okienko edytora, aby wyświetlić zawartość HTML, a następnie utworzymy pole JText, które będzie używane do wypełnienia adresu URL, oraz przycisk JButton, który służy do wyszukiwania adresu URL w sieci. Dodaj akcję do przycisku i detektora hiperłączy, których można użyć do dowolnego hiperłącza na stronie HTML. Na koniec dodaj wszystkie komponenty do panelu i panelu do zestawu ramek o rozmiarze ramki, a także ustaw stronę jako tylko do odczytu, aby nie można było wprowadzać żadnych zmian za pomocą metody setEditable jako False.

Kod:

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

Wynik:

Wniosek

Klasa JEditorPane może być używana do wyświetlania normalnego HTML, treści w formacie Rich Text lub zwykłego tekstu z odrobiną stylizacji. Klasa JEditorPane zapewnia przewagę nad JTextPanes do dostarczania komponentu tekstowego, ponieważ klasa JEditorPane zapewnia konstruktory do inicjowania panelu edytora z adresu URL, podczas gdy JTextPane nie ma takich kontrahentów.

Polecane artykuły

To jest przewodnik po JEditorPane. Tutaj omawiamy konstruktory, metody i przykłady w JEditorPane. Możesz również przejrzeć nasze inne powiązane artykuły, aby dowiedzieć się więcej -

  1. Edytory Python
  2. JScrollPane w Javie
  3. JTextField w Javie
  4. Wprowadzenie do JPanel w Javie
  5. JFrame w Javie