Page d'accueilFindIt !ContactAstuces JavaAstuces Java

Astuces JavaTM

Astuces Java

Tip

 Visualiser des fichiers HTML avec Swing

 

Niveau : initié
Compatibilité : Java 1.1 + Swing 1.1 ou Java 2

La bibliothèque Swing apporte de nombreuses fonctionnalités pour gérer l'Interface Homme Machine (ou GUI, Graphical User Interface) d'une application par rapport à la bibliothèque AWT.
Le programme DocumentViewer qui suit met en oeuvre le composant Swing de classe JEditorPane qui permet de visualiser des fichiers HTML (voir même de les éditer). Cette classe fonctionne de manière très simple : il suffit d'utiliser la méthode setPage () qui prend en paramètre l'URL du fichier à visualiser.
Comme les pages HTML visualisées doivent respecter la version 3.2 du langage HTML, ce composant permet aussi de visualiser des frames HTML.

La classe DocumentViewer dérive de la classe JFrame et permet d'afficher dans une fenêtre un champ de saisie utilisé pour rentrer une URL, et une zone d'édition avec des ascenseurs qui permet de visualiser la page HTML requise dans le champ de saisie.

La classe JEditorPane vous permet aussi de gérer le clic sur des liens hypertexte en émettant pour chaque clic sur un lien un événement de classe hyperlinkUpdate. Cette événement est envoyé à tous les listeners du composant visualisé qui implémentent l'interface HyperlinkListener. La classe décrite ci-après implémente cette méthode pour afficher la page correspondante au lien hypertexte sur lequel l'utilisateur a cliqué.

Finalement, vous obtenez un navigateur basic en quelques lignes de programmes !

Pour tester DocumentViewer, recopiez le programme qui suit dans un fichier DocumentViewer.java, compilez-le avec la commande javac DocumentViewer.java et exécutez-le grâce à la commande java DocumentViewer.
Pour visualiser un site Internet, il suffit de taper une URL dans le champ de saisie ou de cliquer sur les liens des pages visualisées (avec le protocole http: ou file:).
Si vous utilisez Java 1.1, vous devez télécharger Swing 1.1 à l'adresse (Swing 1.1 est inclus dans Java 2) :
http://java.sun.com/products/jfc/download.html.

/*
 * DocumentViewer.java  1.0
 * 
 * Copyright (c) 1999 Emmanuel PUYBARET - eTeks.
 * All Rights Reserved.
 *
 */
 
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
 
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import java.io.IOException;
 
// Classe de fenêtre Swing permettant de visualiser un
// document (HTML ou texte)
public class DocumentViewer extends JFrame 
                            implements HyperlinkListener, 
                                       ActionListener
{
  // Composant Swing permettant de visualiser un document
  JEditorPane viewer       = new JEditorPane ();
  // Champ de saisie de l'URL à visualiser
  JTextField  urlTextField = new JTextField ();
 
  public DocumentViewer () 
  {	
    // Construction de l'Interface Graphique
    // Panel en haut avec un label et le champ de saisie
    JPanel inputPanel = new JPanel (new BorderLayout ());
    JLabel label = new JLabel ("URL : ");    
    inputPanel.add (label, BorderLayout.WEST);
    inputPanel.add (urlTextField, BorderLayout.CENTER);
    // Zone scrollée au centre avec le document    
    JScrollPane scrollPane = new JScrollPane (viewer);
    // Ajout des composants à la fenêtre
    getContentPane ().add (inputPanel, BorderLayout.NORTH);
    getContentPane ().add (scrollPane, BorderLayout.CENTER);
    
    // Mode non editable pour recevoir les clics sur les 
    // liens hypertexte
    viewer.setEditable (false);
    // Ajout du listener de clic sur lien
    viewer.addHyperlinkListener (this);
    // Ajout du listener de modification de la saisie
    urlTextField.addActionListener (this);
  }
 
  // Méthode appelée après un clic sur un lien hyper texte
  public void hyperlinkUpdate (HyperlinkEvent event) 
  {
    if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
    {
      // Modification du champ de saisie
      urlTextField.setText (event.getURL ().toString ());
      if (event instanceof HTMLFrameHyperlinkEvent) 
      {
        // Evenement spécial en cas d'utilisation de Frame HTML
        HTMLDocument doc = (HTMLDocument)viewer.getDocument ();
        doc.processHTMLFrameHyperlinkEvent (
                       (HTMLFrameHyperlinkEvent)event);
      }
      else
        // Chargement de la page
        loadPage (urlTextField.getText ());
    }
  }
 
  // Méthode appelée après une modification de la saisie
  public void actionPerformed (ActionEvent event)
  {
    loadPage (urlTextField.getText ());
  }
        
  public void loadPage (String urlText)
  {
    try 
    {
      // Modification du document visualise
      viewer.setPage (new URL (urlText));
    } 
    catch (IOException ex) 
    {
      System.err.println ("Acces impossible a " + urlText);
    }
  }
  
  // Méthode main () d'exemple de mise en oeuvre.
  // Utilisation : java DocumentViewer
  public static void main (String [] args)
  {
    JFrame viewerFrame = new DocumentViewer ();
    viewerFrame.setSize (400, 300);
    viewerFrame.show ();
  }
}


Page d'accueilFindIt !ContactAstuces JavaAstuces JavaDébut de la page
© Copyrights 1997-2023 Emmanuel PUYBARET / eTeks
- Tous droits réservés -
Astuces Java