practica 2 avance de la sala de chat
DESCRIPTION
practica 2TRANSCRIPT
A continuación se muestran los códigos utilizados para la elaboración del
proyecto de Sala de Chat así como las pantallas de los mismos.
Código .html utilizado para Seleccionar los sitios desde la web. [Fig. 1.0]
y su pantalla en la web [Fig. 1.1]
Fig. 1.0 Código del Selector de Sitios web.
Fig. 1.1 Aquí se muestra la ejecución del selector del sitio web y éste nos
manda un error al ejecutar el html debido a que el navegador no tiene
actualizado el plugin, el cual pudimos comprobar al ejecutar la aplicación
[Fig. 1.2] de java.
Fig. 1.2 En ésta captura se observa la ejecución de la aplicación del código de
selector de sitios sin presentar ningún error y mostrando la ventana de salida
con los sitios a poder seleccionar.
Posteriormente realizamos la prueba para leer archivos del servidor. A
continuación mostraremos la ejecución de la aplicación [Fig. 2.0] y la ventana
para introducir la URL.
Fig. 2.0 Ejecución de la aplicación para comprobar que se puedan leer archivos
del servidor.
A continuación mostraremos los códigos completos del avance de la
Práctica Sala de Chat.
// Fig. 24.2: SelectorSitios.java
// Este programa carga un documento de un URL.
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.ArrayList;
import java.awt.BorderLayout;
import java.applet.AppletContext;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class SelectorSitios extends JApplet
{
private HashMap< Object, URL > sitios; // nombres de sitios y URLs
private ArrayList< String > nombresSitios; // nombres de sitios
private JList selectorSitios; // lista de sitios a elegir
// lee los parámetros de HTML y establece la GUI
public void init()
{
sitios = new HashMap< Object, URL >(); // crea objeto HashMap
nombresSitios = new ArrayList< String >(); // crea objeto ArrayList
// obtiene los parámetros del documento de HTML
obtenerSitiosDeParametrosHTML();
// crea componentes de GUI e interfaz de esquema
add( new JLabel( "Seleccione un sitio para navegar" ),
BorderLayout.NORTH );
selectorSitios = new JList( nombresSitios.toArray() ); // llena el objeto JList
selectorSitios.addListSelectionListener(
new ListSelectionListener() // clase interna anónima
{
// va al sitio seleccionado por el usuario
public void valueChanged( ListSelectionEvent evento )
{
// obtiene el nombre del sitio seleccionado
Object objeto = selectorSitios.getSelectedValue();
// usa el nombre del sitio para localizar el URL correspondiente
URL nuevoDocumento = sitios.get( objeto );
// obtiene el contenedor de applets
AppletContext navegador = getAppletContext();
// indica al contenedor de applets que cambie de página
navegador.showDocument( nuevoDocumento );
} // fin del método valueChanged
} // fin de la clase interna anónima
); // fin de la llamada a addListSelectionListener
add( new JScrollPane( selectorSitios ), BorderLayout.CENTER );
} // fin del método init
// obtiene los parámetros del documento de HTML
private void obtenerSitiosDeParametrosHTML()
{
String titulo; // titulo del sitio
String ubicacion; // ubicacion del sitio
URL url; // URL de la ubicación
int contador = 0; // cuenta el número de sitios
titulo = getParameter( "titulo" + contador ); // obtiene el título del primer
sitio
// itera hasta que no haya más parámetros en el documento de HTML
while ( titulo != null )
{
// obtiene la ubicación del sitio
ubicacion = getParameter( "ubicacion" + contador );
try // coloca titulo/URL en objeto HashMap y titulo en objeto ArrayList
{
url = new URL( ubicacion ); // convierte la ubicación en URL
sitios.put( titulo, url ); // coloca titulo/URL en objeto HashMap
nombresSitios.add( titulo ); // coloca titulo en objeto ArrayList
} // fin de try
catch ( MalformedURLException excepcionURL )
{
excepcionURL.printStackTrace();
} // fin de catch
contador++;
titulo = getParameter( "titulo" + contador ); // obtiene el título del siguiente
sitio
} // fin de while
} // fin del método obtenerSitiosDeParametrosHTML
} // fin de la clase SelectorSitios
// Fig. 24.3: LeerArchivoServidor.java
// Uso de un objeto JEditorPane para mostrar el contenido de un archivo
en un servidor Web.
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.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
public class LeerArchivoServidor extends JFrame
{
private JTextField campoIntroducir; // objeto JTextField para escribir el
nombre del sitio
private JEditorPane areaContenido; // para mostrar un sitio Web
// establece la GUI
public LeerArchivoServidor()
{
super( "Navegador Web simple" );
// crea campoIntroducir y registra su componente de escucha
campoIntroducir = new JTextField( "Escriba el URL del archivo" );
campoIntroducir.addActionListener(
new ActionListener()
{
// obtiene el documento especificado por el usuario
public void actionPerformed( ActionEvent evento )
{
obtenerLaPagina( evento.getActionCommand() );
} // fin del método actionPerformed
} // fin de la clase interna
); // fin de la llamada a addActionListener
add( campoIntroducir, BorderLayout.NORTH );
areaContenido = new JEditorPane(); // crea areaContenido
areaContenido.setEditable( false );
areaContenido.addHyperlinkListener(
new HyperlinkListener()
{
// si el usuario hizo clic en un hipervínculo, va a la página especificada
public void hyperlinkUpdate( HyperlinkEvent evento )
{
if ( evento.getEventType() == HyperlinkEvent.EventType.ACTIVATED )
obtenerLaPagina( evento.getURL().toString() );
} // fin del método hyperlinkUpdate
} // fin de la clase interna anónima
); // fin de la llamada a addHyperlinkListener
add( new JScrollPane( areaContenido ), BorderLayout.CENTER );
setSize( 400, 300 ); // establece el tamaño de la ventana
setVisible( true ); // muestra la ventana
} // fin del constructor de LeerArchivoServidor
// carga el documento
private void obtenerLaPagina( String ubicacion )
{
try // carga el documento y muestra la ubicación
{
areaContenido.setPage( ubicacion ); // establece la página
campoIntroducir.setText( ubicacion ); // establece el texto
} // fin de try
catch ( IOException excepcionES )
{
JOptionPane.showMessageDialog( this,
"Error al obtener el URL especificado", "URL incorrecto",
JOptionPane.ERROR_MESSAGE );
} // fin de catch
} // fin del método obtenerLaPagina
} // fin de la clase LeerArchivoServidor
// Fig. 24.4: PruebaLeerArchivoServidor.java
// Crea e inicia un objeto LeerArchivoServidor.
import javax.swing.JFrame;
public class PruebaLeerArchivoServidor
{
public static void main( String args[] )
{
LeerArchivoServidor aplicacion = new LeerArchivoServidor();
aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
} // fin de main
} // fin de la clase PruebaLeerArchivoServidor