// Figure 17.2 : SelecteurSite.java // Ce programme utilise un bouton pour charger un document d'une URL. // Packages de noyau Java. import java.net.*; import java.util.*; import java.awt.*; import java.applet.AppletContext; // Packages d'extension Java. import javax.swing.*; import javax.swing.event.*; public class SelecteurSite extends JApplet { private Hashtable sites; // noms et URL des sites private Vector nomsDeSites; // noms des sites private JList selecteurDeSite; // liste de choix des sites // Lire les paramètres HTML et mettre en place la GUI. public void init() { // Créer la Hashtable et le Vector. sites = new Hashtable(); nomsDeSites = new Vector(); // Obtenir les paramètres du document HTML. getSitesDesParametresHTML(); // Créer les composants GUI et l'interface du canevas. Container conteneur = getContentPane(); conteneur.add( new JLabel( "Choisissez le site à visiter" ), BorderLayout.NORTH ); selecteurDeSite = new JList( nomsDeSites ); selecteurDeSite.addListSelectionListener( new ListSelectionListener() { // Aller au site sélectionné par l'utilisateur. public void valueChanged( ListSelectionEvent evenement ) { // Prendre le nom du site sélectionné. Object objet = selecteurDeSite.getSelectedValue(); // Utiliser le nom du site pour localiser son URL. URL nouveauDocument = ( URL ) sites.get( objet ); // Obtenir une référence au conteneur d'applet. AppletContext navigateur = getAppletContext(); // Dire au conteneur d'applet de changer de page. navigateur.showDocument( nouveauDocument ); } } ); conteneur.add( new JScrollPane( selecteurDeSite ), BorderLayout.CENTER ); } // Obtenir les paramètres du document HTML. private void getSitesDesParametresHTML() { // Rechercher les paramètres d'applet dans le document HTML // et ajouter les sites à la Hashtable. String titre, emplacement; URL url; int compteur = 0; // Prendre l'intitulé du premier site. titre = getParameter( "titre" + compteur ); // Boucler tant qu'il y a des paramètres dans le document HTML. while ( titre != null ) { // Prendre l'emplacement du site. emplacement = getParameter( "emplacement" + compteur ); // Placer la paire titre/URL dans la Hashtable // et le titre dans le Vector. try { // Convertir l'emplacement en une URL. url = new URL( emplacement ); // Déposer (put) la paire titre/URL dans la Hashtable. sites.put( titre, url ); // Déposer le titre dans le Vector. nomsDeSites.add( titre ); } // Traiter un éventuel format d'URL non valable. catch ( MalformedURLException urlException ) { urlException.printStackTrace(); } ++compteur; // Prendre l'intitulé de site suivant. titre = getParameter( "titre" + compteur ); } } } /****************************************************************************** * (C) Copyright 2002 par Deitel & Associates, Inc. et Prentice Hall * * Tous droits réservés. * * * * RENONCIATION: Les auteurs et l'éditeur de cet ouvrage ont fait tous * * les efforts pour préparer ce livre et les programmes qu'il contient, * * y compris dans l'élaboration, la recherche et les contrôles sur l'effica- * * cité des théories et programmes. Les auteurs et l'éditeur n'offrent * * aucune garantie de quelque ordre que ce soit, expresse ou implicite, * * pour ce qui concerne ces programmes ni la documentation présentés * * dans ce livre. L'auteur et l'éditeur ne pourront être tenus pour * * responsables de tout dommage accessoire ou indirect, lié à ou causé * * par la fourniture, la performance ou l'utilisation de ces programmes. * *****************************************************************************/