⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java8.htm

📁 E-books about Java Programing in Spanish
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML>
<HEAD>
<TITLE>Java desde Cero</TITLE>
</HEAD>
<BODY background=/iconos/1.gif  TEXT=000000 LINK=FF0000 VLINK=A62A2A>
 
<H1>Una ventana con vida<BR>
</H1>
<P>
Antes que nada, vamos a crear una p&aacute;gina HTML para cargar
nuestra clase Ejemplo8, que ser&aacute; un applet (aunque tambi&eacute;n
la podremos ejecutar en forma standalone con &quot;<FONT FACE="Arial">java
Ejemplo8</FONT>&quot;), por ejemplo:<BR>
<PRE>
<FONT SIZE=2>&lt;!-- Archivo Ejemplo8.htm - HTML de ejemplo --&gt;
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;Ejemplo 8 - Ventana de datos&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
Aqu&amp;iacute; se tiene que abrir una ventana de entrada de datos
&lt;applet code=&quot;Ejemplo8.class&quot; width=170 height=150&gt;
&lt;/applet&gt;
&lt;/BODY&gt;
&lt;/HTML&gt;<BR>
</FONT>
</PRE>
<P>
Nuestro applet ser&aacute; muy sencillo, ya que utilizar&aacute;
clases que iremos definiendo en este cap&iacute;tulo; por empezar
s&oacute;lo crear&aacute; una ventana que definiremos en la clase
<FONT FACE="Arial">Ventana8</FONT>:<BR>
<PRE>
<FONT SIZE=2>// Archivo: Ejemplo8.java
// Compilar con &quot;javac Ejemplo8.java&quot;

import java.awt.*;
import java.applet.*;

public class Ejemplo8 extends Applet {

public static void main (String arg[]) {	// para poder llamarla con &quot;java Ejemplo8&quot;
new Ventana8(&quot;Ejemplo Standalone&quot;, true);
}

public void init() {			// se ejecuta al abrirse un applet
new Ventana8(&quot;Ejemplo Applet&quot;, false);
}

}<BR>
</FONT>
</PRE>
<P>
Con los par&aacute;metros que le pasamos a la clase <FONT FACE="Arial">Ventana8</FONT>
le indicamos el t&iacute;tulo de la ventana y si se carga como
applet o no (ya que el m&eacute;todo de cierre var&iacute;a).
<BR>
<H2>Viajando con Java</H2>
<P>
Ahora vamos a trabajar con nuestra clase <FONT FACE="Arial">Ventana8</FONT>,
una ventana que nos permita seleccionar una fecha y dos ciudades
(desde y hasta) que simula una ventana de compra de pasajes de,
por ejemplo, una terminal de &oacute;mnibus.
<P>
El ejemplo est&aacute; basado en uno del libro &quot;Programaci&oacute;n
Java&quot; de Macary y Nicolas, aunque algo mejorado y ampliado.
<P>
En nuestra ventana podremos entrar una fecha a mano o directamente
mediante los botones Hoy y Ma&ntilde;ana, elegiremos la ciudad
de salida y la de llegada de dos listas, y presionaremos luego
un bot&oacute;n que nos mostrar&aacute; los servicios disponibles,
nos permitir&aacute; comprar los pasajes, etc.
<P>
A medida que entramos los datos, en el bot&oacute;n se ir&aacute;
mostrando el detalle de lo que se fue seleccionando.
<P>
Nuestra ventana quedar&aacute; m&aacute;s o menos as&iacute;:
<BR>
<P>
<IMG SRC="/img00002.gif"><BR>
<P>
Empecemos por armar la estructura de la clase Ventana8:<BR>
<PRE>
<FONT SIZE=2>import java.awt.*;

class Ventana8 extends Frame {	// hija de Frame

// aqu&iacute; agregaremos luego
// algunas variables para guardar datos
// (ciudades de salida y llegada, fecha)
button		ok;		// tambi&eacute;n el bot&oacute;n de compra de pasajes
boolean	enApplet;	// y otra para indicar si es un applet o no

Ventana8 (String titulo, boolean enApplet) {	// un constructor
super(titulo);				// llama al de Frame
this.enApplet = enApplet;		// guardamos esto
// aqu&iacute; crearemos los botones, listas, etc
// con sus valores iniciales
// y los pondremos en la ventana.
// por ejemplo:
ok = new Button(&quot;Viaje: de ? a ? el ?/?/?&quot;);
add(&quot;South&quot;,ok);
pack();					// dimensionamos la ventana
show();					// y la mostramos!
}

public boolean handleEvent(Event e) {		// para manejar los eventos
if (e.id == Event.WINDOW_DESTROY) {	// cerrar la ventana
if (enApplet) dispose();
else System.exit(0);
}
// aqu&iacute; miraremos si se presion&oacute; un bot&oacute;n
// o se eligi&oacute; algo de una lista
// y actuaremos en consecuencia
return super.handleEvent(e);	// los dem&aacute;s eventos los maneja Frame
}

void ActualizaBoton() {
	// aqu&iacute; pondremos un m&eacute;todo que servir&aacute;
	// para actualizar el bot&oacute;n de compra de pasajes,
	// ya que el texto del mismo se actualiza cada
	// vez que se selecciona una ciudad o se cambia la fecha
}

void Activar() {
	// y aqu&iacute; un m&eacute;todo para cuando se presione
	// dicho bot&oacute;n, que se supone que va a consultar
	// una base de datos y abrir una ventana
// para vendernos el pasaje
}
}<BR>
</FONT>
</PRE>
<P>
Nuestro programa ya funciona! Aunque un poquito incompleto, claro...
<P>
Igual vamos a analizarlo un poco el constructor, que es lo m&aacute;s
interesante aqu&iacute;.
<P>
Primero llamamos al constructor de la clase madre, que se encarga
de crear la ventana:<BR>
<PRE>
<FONT SIZE=2>Ventana8 (String titulo, boolean enApplet) {	// un constructor
super(titulo);				// llama al de Frame<BR>
</FONT>
</PRE>
<P>
Esto ser&iacute;a como llamar a <FONT FACE="Arial">super.Frame(titulo)</FONT>,
o bien <FONT FACE="Arial">Frame(titulo)</FONT>, ya que el m&eacute;todo
constructor tiene el mismo nombre de la clase. Luego, con:<BR>
<PRE>
<FONT SIZE=2>this.enApplet = enApplet;		// guardamos esto<BR>
</FONT>
</PRE>
<P>
asignamos a nuestra variable <FONT FACE="Arial">enApplet</FONT>
de la clase el valor del par&aacute;metro que se pas&oacute; al
constructor, que se llama igual. El prefijo <FONT FACE="Arial">this</FONT>,
que se refiere a la instancia particular de la clase, permite
diferenciar uno de otro (esto es v&aacute;lido tanto para variables
como para m&eacute;todos).<BR>
<PRE>
<FONT SIZE=2>ok = new Button(&quot;Viaje: de ? a ? el ?/?/?&quot;);
add(&quot;South&quot;,ok);<BR>
</FONT>
</PRE>
<P>
Aqu&iacute; hemos creado un bot&oacute;n ubicado al pie de la
ventana (por ahora lo &uacute;nico que pusimos), y luego dimensionamos
la ventana y la mostramos:<BR>
<PRE>
<FONT SIZE=2>pack();			// dimensionamos la ventana
show();			// y la mostramos!<BR>
</FONT>
</PRE>
<H3>Preparando listas</H3>
<P>
Ahora vamos a empezar a crear otros objetos para ir completando
nuestra aplicaci&oacute;n. Comencemos con las listas de ciudades.
<P>
Para eso, vamos a crear un objeto descendiente de <FONT FACE="Arial">Panel</FONT>
que simplemente contenga una lista de ciudades predefinidas y
un t&iacute;tulo que diga &quot;Seleccione ciudad de&quot;, y
a continuaci&oacute;n &quot;salida&quot; o &quot;llegada&quot;.
<P>
Tambi&eacute;n agregaremos un m&eacute;todo <BR>
<PRE>
<FONT SIZE=2>import java.awt.*;

class SelecPueblo extends Panel {
private List	listaPueblos;

SelecPueblo (String salidaOllegada) {
setLayout (new BorderLayout (20,20));

// armamos el t&iacute;tulo, que va a ser un Label:
StringBuffer titulo = new StringBuffer();
titulo.append(&quot;Seleccione ciudad de &quot;);
titulo.append(salidaOllegada);
titulo.append(&quot;: &quot;);
add(&quot;North&quot;, new Label(titulo.toString()));

// armamos la lista de ciudades, que va a ser un List:
listaPueblos = new List (4, false);
listaPueblos.addItem(&quot;Buenos Aires&quot;);
listaPueblos.addItem(&quot;La Plata&quot;);
listaPueblos.addItem(&quot;Azul&quot;);
listaPueblos.addItem(&quot;Rosario&quot;);
listaPueblos.addItem(&quot;Cordoba&quot;);
listaPueblos.addItem(&quot;Bah&iacute;a Blanca&quot;);
add(&quot;South&quot;, listaPueblos);
}

public String getDescription() {
return listaPueblos.getSelectedItem();
}
}<BR>
</FONT>
</PRE>
<P>
No hay mucho para analizar aqu&iacute;, creo. La variable <FONT FACE="Arial">listaPueblos</FONT>
es privada, pero puede consultarse cu&aacute;l es la ciudad seleccionada
mediante <FONT FACE="Arial">getDescription</FONT> (que es public).
Este m&eacute;todo llama al m&eacute;todo <FONT FACE="Arial">getSelectedItem</FONT>
de la lista, que devuelve el texto seleccionado.
<P>
En el constructor, armamos el texto del t&iacute;tulo como un
<FONT FACE="Arial">StringBuffer</FONT>. Los objetos <FONT FACE="Arial">StringBuffer</FONT>
son similares a los de clase <FONT FACE="Arial">String</FONT>
pero pueden ser modificados. En cambio los objetos <FONT FACE="Arial">String</FONT>,
una vez creados, no pueden ser modificados directamente: sus m&eacute;todos
(<FONT FACE="Arial">concat</FONT>, <FONT FACE="Arial">toLowerCase</FONT>,
etc.) simplemente crean un nuevo <FONT FACE="Arial">String</FONT>
con el nuevo valor.
<P>
Esto lo hicimos para introducir esta nueva clase; por supuesto
hubiera sido m&aacute;s f&aacute;cil poner, como pueden comprobar,
con el mismo resultado:<BR>
<PRE>
<FONT SIZE=2>String tit = &quot;Seleccione ciudad de &quot;+salidaOllegada+&quot;: &quot;;
add(&quot;North&quot;, new Label(tit));<BR>
</FONT>
</PRE>
<P>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -