Está en la página 1de 41

Que es un Applet

Un pequeo programa escrito en Java e incluido en una pgina HTML. Es


independiente del sistema operativo en el que funciona. Se puede utilizar un
aplique para visualizar un teto que desfila en un rea espec!fica" o
animaciones.
#e$master.l%cos.es&glossar%&
Un applet es un pequeo programa de aplicaci'n. (ntes de que eistiera la
)orld )ide )e$" los programas incorporados de proceso de teto % di$u*o
que ven!an con )indo#s se denomina$an a veces applets +accesorios,. En
la -ed" usando Java" el lengua*e de programaci'n orientado a o$*etos" un
applet es un pequeo programa que puede enviarse *unto con una pgina
#e$ a un usuario. Los applets Java pueden e*ecutar animaciones
interactivas" clculos inmediatos u otras tareas sencillas sin tener que enviar
una solicitud del usuario al servidor.
###.gamarod.com.ar&recursos&glosario&
.equea (plicaci'n, Un mini programa que puede ser descargado
rpidamente % usado por cualquier ordenador equipado con un navegador
capaz de e*ecutar Java/ o (ctive0. Las 1(pplets1 transportan su propio
soft#are de e*ecuci'n.
###.sindicacion.net&diccionario2glosario&diccionario2a.3tm
Pasos de Ejecucin de un Applet
4. El navegador carga el documento de HTML
5. El navegador carga las clases de applet
6. El navegador corre el applet
Jerarqu!a de la 7lase (pplet
La clase java.applet.Applet es realmente una subclase de java.awt.Panel. La jerarqua
de las clases applet y AWT estn de la siguente manera:
java.lang.Object
8
9//*ava.a#t.7omponent
8
9//*ava.a#t.7ontainer
8
9//*ava.a#t..anel
8
9//*ava.applet.(pplet
Mtodos de la Clase Applet
/ init + ,
/ start + ,
/ stop + ,
/ destro% + ,
/ paint + ,
Ejemplo:
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Hello)orld etends (pplet <
pu$lic void paint +=rap3ics g, <
g.dra#String +1Hello )orld>1" 5?"5?, ;
@
@
EJEMPLO DE CONSTRUCCIN DE UNA APPLET
A. Cdigo
.ara crear una applet normalmente ser necesario importar al menos las
$i$liotecas java.awt.* % la java.applet.*.
La clase que represente a la applet se 3a de declarar como una su$clase de
la clase Applet" para poder so$reescri$ir los mAtodos de la clase Applet.
Siempre conviene so$reescri$ir al menos el mAtodo paint() que ser llamado
por los navegadores que soporten applets para mostrarles por pantalla.
Bamos a construir una applet denominada AppletDiagonal que simplemente
di$u*e una l!nea diagonal. Un posi$le c'digo para esta applet ser!aC
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class (ppletDiagonal etends (pplet <
pu$lic void paint+=rap3ics g, <
g.set7olor+ 7olor.red ,;
g.dra#Line+E" E" get)idt3+," getHeig3t+, ,;
@
@
.asemos a comentar el funcionamiento de este c'digoC
4. El mAtodo paint() reci$e un o$*eto de la clase Graphics. La clase
Graphics" incluida en el ()T" contiene mAtodos para mostrar varios
tipos de grficos.
5. Mediante el mAtodo setColor() de la clase Graphics se esta$lece el
color de primer plano a ro*o" que es uno de los colores predefinidos de
la clase Color.
6. .or Fltimo" mediante drawLine() se di$u*a una l!nea dadas las
coordenadas de su esquina superior izquierda % de la inferior derec3a.
En este caso se indican la esquina superior izquierda de la applet
mediante las coordenadas +0,0," % la esquina inferior derec3a se
o$tiene mediante dos mAtodos de la clase Dimension + getWidth(),
geteight() ,.
B. Ejecucin
.ara e*ecutar la applet" una vez compilado el fic3ero" se introduce la llamada
a la applet en una pgina )e$ +por e*emplo AppletDiagonal.htm,"
introduciendo entre su c'digo HTML lo siguienteC
Gapplet codeH1(ppletDiagonal.class1 #idt3H5EE 3eig3tH5EEI
G&appletI
7uando se cargue esta pgina )e$ en un navegador compati$le con Java o
mediante el visualizador de applets que viene con el JDJ +appletviewer, se
ver algo comoC
!magen "# Applet 1L!nea1
Se podr!a di$u*ar un rectngulo con cam$iar la l!nea de c'digo de drawLine()
por otra que llamase al mAtodo draw$ect()C
g.dra#-ect+4E" 4E" r.#idt3 K5E" r.3eig3t K5E,;
Por favor, si usted tiene Creator !E "acer el #aller Mi Primer Applet
C!A$E$ Q%E $E &'()CA' E' %' APP!E#
!A C!A$E *+AP,&C$
En el lengua*e Java es posi$le di$u*ar en un aplique simplemente volviendo a
definir el mAtodo paint. Este mAtodo se invoca automticamente por el
sistema cuando la ventana que inclu%e el aplique pasa a un primer plano. .or
lo tanto cada orden grfica al aplique se dar en el mAtodo paint del aplique.
void paint +=rap3ics g,
<
&& Di$u*o
@
7uando el aplique 3a%a di$u*ado % se quiera visualizar posi$les cam$ios" es
posi$le invocar el mAtodo repaint+, o el mAtodo update+=rap3ics g, que $orra
el rea en el que el aplique 3a di$u*ado % vuelve a invocar la paint.
El mAtodo paint+=rap3ics g, no se puede invocar directamente.
El aplique no s'lo tiene el mAtodo paint que se puede volver a definir" sino
tam$iAn los o$*etos de tipo 7omponent" es decir" todos los =UL. .or lo tanto"
para cam$iar el aspecto grfico de cualquier componente grfico" $asta con
volver a definir el mAtodo paint.
Entre todos los componentes est el %a citado lienzo so$re el que es posi$le
di$u*ar. Es un o$*eto de la clase 7anvas. Los que estn acostum$rados a
programar con otros lengua*es esperan que en la paint 3a%a un inicializador
del device en el que se va a di$u*ar %" despuAs" una serie de instrucciones de
tipo dra#Line" dra#Mo etc." sin em$argo" os tengo que decir que esto no
siempre es verdad" es decir" que en los componentes % en los apliques no
3a% ningFn mAtodo grfico.
Llegados a este punto" queda claro incluso que el parmetro g de tipo
=rap3ics de la paint inclu%e los mAtodos grficos que Java puede utilizar %
representar" por decirlo de alguna forma" el rea en el que se di$u*arn las
primitivas.
=rap3ics es una clase que no se puede incluir" sino que es reci$ida por la
paint como parmetro. .or lo tanto se puede utilizar s'lo en ella % sus
mAtodos sonC
Mtodos -ue di.ujan figuras lineales
dra#6D-ect + int " int %" int anc3o" int altura" $oolean so$resaliente,
Este mAtodo di$u*a un rectngulo en las coordenadas 0"N con dimensiones
(O7HP" (LTU-( con un $orde que da la apariencia de 6D" el parmetro
SPM-ES(LLEOTE indica si el rectngulo so$resale de la pantalla o est
3acia adentro de la pantalla.
dra#(rc+ int " int %" int anc3o" int altura" int anguloLnicial" int anguloQinal,
Este mAtodo di$u*a un arco de circunferencia inscrito en el rectngulo
descrito por las coordenadas 0"N % dimensiones (O7HP" (LTU-(" teniendo
como ngulo de inicio +en seagesimal, al parmetro (O=ULPLOL7L(L %
ngulo final relativo al de inicio al parmetro (O=ULPQLO(L.
dra#Line+ int " int %" int 4" int %4 ,
Este mAtodo di$u*a un l!nea entre los puntos 0"N e 04"N4
dra#Pval+ int " int %" int anc3o" int altura ,
Este mAtodo di$u*a una elipse inscrita en el rectngulo descrito por las
coordenadas 0"N % las dimensiones (O7HP % (LTU-(.
dra#-ect+ int " int %" int anc3o" int altura ,
Este mAtodo di$u*a un rectngulo en las coordenadas 0"N con dimensiones
(O7HP % (LTU-(.
Mtodos -ue +ellenan /iguras
Todos los mAtodos siguientes son equivalentes a los mAtodos que di$u*an
figuras lineales" s'lo que en este caso rellenan el interior de las figurasC
dra#Qill6D-ect+ int " int %" int delta" int delta%" $oolean so$resaliente ,
fill(rc+ int " int %" int anc3o" int altura" int anguloLnicial" int angulaQinal ,
fillPval+ int " int %" int delta" int delta% ,
fill-ect+ int " int %" int delta" int delta% ,
Todos los mAtodos mencionados anteriormente di$u*an las figuras o las
rellenan usando el color por defecto de la instancia a la clase =rap3ics que
se estA usando.
Mtodos para 0i.ujar Poligonos
a$stract void dra#.ol%gon+intRS .oints" intRS %.oints" int n.oints,
void dra#.ol%gon+.ol%gon p,
El primer caso" es necesario un vector de puntos "%.
El Segundo 7aso es necesario un o$*eto .ol%gon +Ber E*emplo
Lmgenes.*ava,
Mtodo para &mprimir una Cadena
a$stract void dra#String+String str" int " int %,
Donde str es la cadena a imprimir en sentido 3orizontal a partir de la
coordenada o punto "%
Mtodo para mostrar &magenes
Los o$*etos =rap3ics pueden mostrar imgenes a travAs del mAtodoC
dra#Lmage+ Lmage img"int "int %"LmageP$server o$servador ,;
Ha% que tener en cuenta que el mAtodo dra#Lmage+, necesita un o$*eto
Lmage % un o$*eto LmageP$server. .odemos cargar una imagen desde un
fic3ero de di$u*o +actualmente s'lo se soportan formatos =LQ % J.E=, con el
mAtodo getLmage+,C
Lmage img H getLmage+ getDocumentMase+,"1fic3ero.gif1 ,;
La forma de invocar al mAtodo getLmage+, es indicando un U-L donde se
encuentre el fic3ero que contiene la imagen que queremos presentar % el
nom$re de ese fic3eroC
getLmage+ U-L directorioLmagen"String fic3eroLmagen ,;
Un U-L comFn para el mAtodo getLmage+, es el directorio donde est el
arc3ivo HTML. Se puede acceder a esa localizaci'n a travAs del mAtodo
getDocumentMase+, de la clase (pplet" como %a se 3a indicado.
Oormalmente" se realiza el getLmage+, en el mAtodo init+, del applet % se
muestra la imagen cargada en el mAtodo paint+," tal como se muestra en el
e*emplo siguienteC
pu$lic void init+, <
img H getLmage+ getDocumentMase+,"1pepe.gif1 ,;
@
pu$lic void paint+ =rap3ics g , <
g.dra#Lmage+ img""%"t3is ,;
@
!A C!A$E COLOR
Los colores primarios son el ro*o" el verde % el azul. Java utiliza un modelo de
color denominado -=M" que significa que cualquier color se puede descri$ir
dando las cantidades de ro*o +-ed," verde +=reen," % azul +Mlue,. Estas
cantidades son nFmeros enteros comprendidos entre E % 5??" o $ien"
nFmeros reales comprendidos entre E.E % 4.E. La siguiente ta$la nos
proporciona los colores ms comunes % sus valores -=M.
'om.re +ed 1rojo2
*reen
1verde2
Blue 1a3ul2
#3ite 5?? 5?? 5??
lig3t=ra% 4T5 4T5 4T5
gra% 45U 45U 45U
draV=ra% WX WX WX
$lacV E E E
red 5?? E E
pinV 5?? 4Y? 4Y?
orange 5?? 5EE E
%ello# 5?? 5?? E
green E 5?? E
magenta 5?? E 5??
c%an E 5?? 5??
$lue E E 5??
.ara crear un o$*eto de la clase Color" se pasan tres nFmeros a su
constructor que indican la cantidad de ro*o" verde % azul.
7olor color-osaHne# 7olor+5??" 4Y?" 4Y?,;
Mediante la funci'n setColor" cam$iamos color con el que di$u*amos una
l!nea" un teto o rellenamos una figura cerrada en el conteto grfico g.
g.set7olor+color-osa,;
Oo es necesario tener a mano la ta$la de las componentes -=M de cada
color. La clase Color nos proporciona un con*unto de colores predefinidos en
forma de miem$ros estticos de dic3a clase. .odemos escri$ir
alternativamente
g.set7olor+7olor.pinV,;
Los colores predefinidos son los siguientes
Color.white Color.%lac& Color.'ellow
Color.lightGra' Color.red Color.green
Color.gra' Color.pin& Color.magenta
Color.dar&Gra' Color.orange Color.c'an
Color.%l(e

El color de fondo de un componente se esta$lece con set)ac&gro(nd % se
o$tiene con get)ac&gro(nd.
!A C!A$E FONT
.ara crear una fuente de teto u o$*eto de la clase *ont llamamos a su
constructor" % le pasamos el nom$re de la fuente de teto" el estilo % el
tamao. .or e*emplo"
Qont fuenteHne# Qont+1Times-oman1" Qont.MPLD" 45,;
Esta sentencia" crea una fuente de teto Times -oman" en letra negrita" de
45 puntos.
Los estilos vienen datos por constantes +miem$ros estticos de la clase
*ont," *ont.)+LD esta$lece el estilo negrita" *ont.!,AL!C" el estilo cursiva" %
*ont.-LA!." el estilo normal. Se pueden com$inar las constantes
*ont.)+LD/*ont.!,AL!C para esta$lecer el estilo negrita % cursiva a la vez.
La funci'n set*ont de la clase Graphics esta$lece la fuente de teto en el
conteto grfico g.
g.setQont+fuente,;
La funci'n get*ont o$tiene la fuente de teto actual de dic3o conteto grfico.
La funci'n draw0tring di$u*a el string guardado en el o$*eto te1to de la clase
0tring" % lo sitFa en la posici'n cu%as coordenadas vienen dadas por los dos
nFmeros enteros que le siguen.
En la siguiente porci'n de c'digo" esta$lecemos una fuente de teto"
di$u*amos el teto" % reesta$lecemos la fuente de teto por defecto" una
operaci'n 3a$itual que se realiza al programar un applet.
Qont oldQontHgetQont+,;
Qont fuenteHne# Qont+1Monospaced1" Qont.MPLD" 6W,;
g.setQont+fuente,;
g.dra#String+teto" 4EE" ?E,;
g.setQont+oldQont,;
g.dra#String+otroTeto" 4EE" YE,;
.ara o$tener el nom$re de las fuentes de teto disponi$les se escri$e el
siguiente c'digo
StringRS nom$reQuentesHgetToolVit+,.getQontList+,;
for+int iHE; iGnom$reQuentes.lengt3; i99,<
S%stem.out.println+nom$reQuentesRiS,;
@
E*emplos donde se integran las clases /ont, Color 4 *rap"icsC
import *ava.a#t.:;
import *ava.applet.:;
import *ava.util.:;
pu$lic class Oeon etends (pplet
<
int r"v"a"i;
-andom -Hne# -andom+,;
pu$lic void init+,
<
setSize+UEE"WEE,;
@
pu$lic void paint+=rap3ics g,
<
rHMat3.a$s+-.netLnt+,Z5?W9E,;
vHMat3.a$s+-.netLnt+,Z5?W9E,;
aHMat3.a$s+-.netLnt+,Z5?W9E,;
7olor coloresHne# 7olor+r" v" a,;
g.set7olor+colores,;
g.setQont+ne# Qont+1(rial1" Qont.MPLD" 5U,,;
g.dra#String+1.-P=-(M(7LPO LEO=U(JE J(B(1" ?E" WE ,;
for+iH4;iGH6EEEEEE;i99,;
repaint+,;
@
@
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Lmagenes etends (pplet <
.ol%gon .Hne# .ol%gon+,;
pu$lic void init+, <
..add.oint+5EE"X?E,;
..add.oint+XEE"5?E,;
..add.oint+WEE"X?E,;
resize+UEE"WEE,;
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.orange,;
g.setQont+ne# Qont+1(rial1"Qont.MPLD"6E,,;
g.dra#String+1LM(=EOES>1" 5UE" WE ,;
g.set7olor+7olor.$lue,;
g.setQont+ne# Qont+1(rial1"Qont.MPLD"4X,,;
g.dra#String+1-E7T(O=ULP ([UL>1" ?E" 4EE,;
g.dra#-ect+Y?"45E"?E"?E,;
g.set7olor+7olor.green,;
g.dra#String+1-E7T(O=ULP -ELLEOP BE-DE1" 5?E" 4EE,;
g.fill-ect+5Y?"45E"?E"?E,;
g.set7olor+7olor.$lue,;
g.dra#String+17L-7ULP -ELLEOP ([UL1" ??E" 4EE,;
g.fillPval+?Y?"45E"?E"?E,;
g.set7olor+7olor.c%an,;
g.dra#String+1T-L(O=ULP -ELLEOP 7N(O1" 6EE" 56E,;
g.fill.ol%gon+.,;
@
@
Q%E E$ %'A AP!&CAC&5' A (E'#A'A$
La aplicaci'n a ventanas es el tipo de aplicaci'n que ms a menudo
utilizamos cuando tra$a*amos con el ordenador. Es una aplicaci'n que se
pone en marc3a de forma local" que utiliza como interfaz del usuario las
tecnolog!as de las ventanas t!pica de los sistemas operativos Mac PS +en la
que naci'," )indo#s +todas sus variantes" )indo#s 6.4" )indo#s T?" T?/
PS-5" TU" OT" 5EEE % Millenium," 0)indo#s +el servidor grfico para Linu %
Uni,.
7asi todos los programas que se utilizan actualmente son aplicaciones a
ventanas. Lo son" por e*emplo" )ord" Oetscape" Eplorer" J$uilder" Bisual
Studio" )in[ip" .aint" 0B" etc\ +Todos pertenecen a los correspondientes
productores,.
.or lo tanto c'mo se crea una Bentana usando el paquete ()T.
7omo siempre creamos una aplicaci'n con el main.. Sin em$argo" la clase
que se crea a3ora ampliar la clase *ava.a#t.Qrame" que representa la
ventana completa" inclu%e el t!tulo" los pulsantes de reducci'n a icono"
maimizar % cerrar.
La clase Qrame tiene varios mAtodos % constructores que se vern ms
adelante. (3ora se va a crear la primera ventana con el t!tulo .rimera
Bentana % que no inclu%e nada. La editamos en Bentana.*ava.
import java.awt.*2
p(%lic class 3entana e1tends *rame
4
p(%lic 3entana()
4
s(per(5-rimera 3entana5)2
setLocation("00,"00)2
set0i6e(700,"00)2
show()2
8
p(%lic static void main(0tring9: arg)
4
new 3entana()2
0'stem.o(t.println(5he creado la ventana5)2
8
8
(l principio" como para cada aplicaci'n" se invoca el main que crea un nuevo
o$*eto de tipo Bentana. +El main % la ventana podr!an estar en dos arc3ivos
separados" uno que gestiona el main" % el otro que gestiona la ventana,.
En el constructor del o$*eto ventana se invoca al constructor de la
superclase" es decir" del frame" con la cadena 1.rimera Bentana1 +es el
t!tulo,. Luego se invoca el mAtodo setLocation que declara la posici'n del
ngulo derec3o en la parte que est arri$a de la ventana en el desVtop" en
este caso G4EE" 4EEI +Son la % la % respectivamente. La se mide
partiendo del lado izquierdo de la pantalla % aumenta a medida que se va
3acia la derec3a. La % se mide partiendo de la parte superior de la pantalla %
aumenta a medida que se va 3acia a$a*o,.
DespuAs se invoca el mAtodo setSize que permite especificar anc3ura %
altura. En nuestro caso" tiene una anc3ura de 5EE % una altura de 4EE.
Qinalmente se invoca el mAtodo s3o#+, % a continuaci'n aparece la ventana
en la pantalla.
Las coordenadas de la pantalla no son las coordenadas cartesianas"
realmente % es precisamente opuesta porque aumenta a medida de que se
$a*a % desminu%e a medida de que se su$e. ]ste es un pro$lema que tiene
no s'lo Java" sino que todos los lengua*es de programaci'n % todas las
$i$liotecas para la grfica -aster. Se de$e a razones 3ist'ricas" supongo"
de$idas a la forma de di$u*ar los piel en pantalla a nivel de 3ard#are. Ha%
que acostum$rarse" pero las primeras veces puede provocar pro$lemas de
razonamiento.
Los mAtodos setLocation" setSize % s3o#" colocan tam$iAn las ventanas en
distintas posiciones % evalFan los cam$ios.
(dems no es verdad que a una aplicaci'n se puede asociar a una solo
ventana. Java es un lengua*e que permite la multiprogramaci'n. 7ada
ventana es un programa independiente que tra$a*a contemporaneamente
con otros. .or eso puedo crear" para la misma aplicaci'n" ms ventanas
Qrame" como en el e*emplo que se ofrece a continuaci'n.
import java.awt.*2
p(%lic class 3entanas e1tends *rame
4
p(%lic 3entanas(0tring .om%re, ent 1, ent ')
4
s(per(.om%re)2
setLocation(1,')2
set0i6e(700,"00)2
show()2
8
p(%lic static void main(0tring9: arg)
4
0'stem.o(t.println(5Creo ; ventanas solapadas5)2
<or (ent e"2i=>2i//) new 3entanas(53entana 5e,"0/(e*"0), "0/(e*"0))2
0'stem.o(t.println(5Creo ; ventanas a c(adros5)2
<or (ent e?>2e=@2e//) new 3entanas(53entana 5/e,(eA>)*700, "00/(eA>))2
0'stem.o(t.println(5e creado las ocho ventanas5)2
8
8
Las mismas cosas se podBan hacer e1tendiendo la clase C*rame del paD(ete
java1.swing.
import java1.swing.*2
p(%lic class 3entana0wing e1tends C*rame
4
p(%lic 3entana0wing()
4
s(per(5-rimera 3entana5)2
setLocation("00,"00)2
set0i6e(700,"00)2
show()2
8
p(%lic static void main(0tring9: arg)
4
new 3entana0wing()2
0'stem.o(t.println(5e creado la ventana5)2
8
8
Este programa es como Bentana.*ava. lo Fnico que ampl!a JQrame de s#ing.
Las Fnicas diferencias son el contenido de la ventana" que esta vez es gris %
antes era $lanco" % el pulsador cerrar" que esta vez cierra la ventana +s'lo la
ventana % no toda la aplicaci'n,. -ealmente la utilizaci'n de s#ing % de a#t
es mu% parecida. Sin em$argo" s#ing es ms comple*o % pone a disposici'n
muc3as ms clases" % ofrece la posi$ilidad de cam$iar el aspecto de las
ventanas a runtime" etc.
Desgraciadamente" no todos los #e$ $ro#ser las pueden utilizar. .or eso"
nosotros veremos las a#t" % despuAs 3a$laremos de las s#ing" de*ando claro
que los que quieran 3acer un aplique para su propria pgina 3tml 3asta
a3ora TLEOEO que utilizar las a#t. Dentro de poco" cuando el 0ML se
convierta en estndar % se tengan que cam$iar los $ro#ser" se podr utilizar
con toda tranquilidad s#ing incluso para los apliques.
.or lo tanto" vemos quA inclu%e la clase Qrame. En primer lugar" los
constructores son dosC
*rame() " que crea un Qrame sin ningFn t!tulo" al principio invisi$le.
*rame(0tring ,)" que crea un Qrame con t!tulo T" tam$iAn inicialmente
invisi$le.
!os atri.utos de la clase son:
static int L7POLQLED
static int OP-M(L
para indicar el estado de las ventanas %
static int 7-PSSH(L-27U-SP-
static int DEQ(ULT27U-SP-
static int E2-ESL[E27U-SP-
static int H(OD27U-SP-
static int MPBE27U-SP-
static int O2-ESL[E27U-SP-
static int OE2-ESL[E27U-SP-
static int O)2-ESL[E27U-SP-
static int S2-ESL[E27U-SP-
static int SE2-ESL[E27U-SP-
static int S)2-ESL[E27U-SP-
static int TE0T27U-SP-
static int )2-ESL[E27U-SP-
static int )(LT27U-SP-
Todos se declaran como deprecated" para los cursores" remplazados por la
clase 7ursor. Hereda la alineaci'n de los componentes de 7omponent.
Los mAtodos sonC
void add.oti<'()" conecta el frame a un recurso de la pantalla % lo convierte
en visi$le.
int getC(rsor,'pe()" declarado Deprecated. Es de la versi'n 4.4 de las JDJ
static *rame9: get*rames()" da un arra% que inclu%e todos los Qrames
creados por la aplicaci'n.
!mage get!con!mage()" da el icono del Qrame. Es un o$*eto de tipo Lcon" que
analizaremos a continuaci'n.
Een()ar getEen()ar()" devuelve la $arra de los menFs del frame. Es un
o$*eto de tipo MenuMar" que analizaremos a continuaci'n.
int get0tate()" da el estado del frame.
0tring get,itle()" da el t!tulo del frame
%oolean is$esi6a%le()" da verdadero si el frame se puede agrandar % reducir
con el rat'n.
protected 0tring param0tring() " da la cadena que inclu%e los parmetros del
Qrame.
void remove(Een(Component m)" quita el MenuMar especificado por el
frame.
void remove.oti<'()" quita la conei'n entre el frame % el recurso que
representa la pantalla" convirtiAndolo en algo que no se puede visualizar.
void setC(rsor(int c(rsor,'pe)" controla el cursor en JDJ4.4. Se declara
deprecated.
void set!con!mage(!mage image)" averigua el icono del Qrame.
void setEen()ar(Een()ar m%)" asigna una MenuMar al frame.
void set$esi6a%le(%oolean resi6a%le)" averigua el Qrame que puede cam$iar
dimensiones o no. .or default lo es.
void set0tate(int state)" averigua el estado del frame
void set,itle(0tring title)" averigua el t!tulo del frame.
Qrame es una clase que ampl!a *ava.a#t.)indo# %" por eso" 3ereda los
mAtodos % los atri$utos.
-ealmente Qrame es una )indo# que aade un $orde % un MenuMar. Los
mAtodos 3eredados de #indo#s sonC
addWindowListener, appl'$eso(rce)(ndle, appl'$eso(rce)(ndle, dispose,
get*oc(s+wner, get!np(tConte1t, getLocale, get+wnedWindows, get+wner,
get,ool&it, getWarning0tring, is0howing, pac&, postFvent, processFvent,
processWindowFvent, removeWindowListener, show, to)ac&, to*ront.
Window amplBa java.awt.Container" es un contenedor de o$*etos ()T. Es un
componente que puede incluir otros componentes. .or lo tanto" por la
propiedad de la transitividad" Qrame 3ereda los mAtodos % los atri$utos. Los
mAtodos sonC
add, add, add, add, add, addContainerListener, add!mpl, co(ntComponents,
deliverFvent, doLa'o(t, <indComponentAt, <indComponentAt, getAlignmentG,
getAlignmentH, getComponent, getComponentAt, getComponentAt,
getComponentCo(nt, getComponents, get!nsets, getLa'o(t,
getEa1im(m0i6e, getEinim(m0i6e, get-re<erred0i6e, insets, invalidate,
isAncestor+<, la'o(t, list, list, locate, minim(m0i6e, paint, paintComponents,
pre<erred0i6e, print, printComponents, processContainerFvent, remove,
remove, removeAll, removeContainerListener, set*ont, setLa'o(t, (pdate,
validate, validate,ree
7ontainer ampl!a *ava.a#t.7omponent. Un 7omponent es un o$*eto que tiene
una representaci'n grfica" por e*emplo un cursor ser una etensi'n de esta
clase que ampl!a" a su vez" *ava.lang.P$*ect
Los atri$utos 3eredados por 7omponent sonC
)+,,+EIAL!G.EF.,, CF.,F$IAL!G.EF.,, LF*,IAL!G.EF.,,
$!G,IAL!G.EF.,, ,+-IAL!G.EF.,
mientras los mAtodos 3eredados por 7omponent sonC
action, add, addComponentListener, add*oc(sListener,
add!np(tEethodListener, addJe'Listener, addEo(seListener,
addEo(seEotionListener, add-ropert'ChangeListener,
add-ropert'ChangeListener, %o(nds, chec&!mage, chec&!mage,
coalesceFvents, contains, contains, create!mage, create!mage, disa%le,
disa%leFvents, dispatchFvent, ena%le, ena%le, ena%leFvents,
ena%le!np(tEethods, <ire-ropert'Change, get)ac&gro(nd, get)o(nds,
get)o(nds, getColorEodel, getComponent+rientation, getC(rsor,
getDrop,arget, get*ont, get*ontEetrics, get*oregro(nd, getGraphics,
geteight, get!np(tEethod$eD(ests, getLocation, getLocation,
getLocation+n0creen, get.ame, get-arent, get-eer, get0i6e, get0i6e,
get,reeLoc&, getWidth, getG, getH, got*oc(s, handleFvent, has*oc(s, hide,
imageKpdate, inside, isDispla'a%le, isDo(%le)(<<ered, isFna%led,
is*oc(s,raversa%le, isLightweight, is+paD(e, is3alid, is3isi%le, &e'Down,
&e'Kp, list, list, list, location, lost*oc(s, mo(seDown, mo(seDrag,
mo(seFnter, mo(seF1it, mo(seEove, mo(seKp, move, ne1t*oc(s, paintAll,
prepare!mage, prepare!mage, printAll, processComponentFvent,
process*oc(sFvent, process!np(tEethodFvent, processJe'Fvent,
processEo(seFvent, processEo(seEotionFvent,
removeComponentListener, remove*oc(sListener,
remove!np(tEethodListener, removeJe'Listener, removeEo(seListener,
removeEo(seEotionListener, remove-ropert'ChangeListener,
remove-ropert'ChangeListener, repaint, repaint, repaint, repaint,
reD(est*oc(s, reshape, resi6e, resi6e, set)ac&gro(nd, set)o(nds,
set)o(nds, setComponent+rientation, setC(rsor, setDrop,arget, setFna%led,
set*oregro(nd, setLocale, setLocation, setLocation, set.ame, set0i6e,
set0i6e, set3isi%le, show, si6e, to0tring, trans<er*oc(s
Mientras que de P$*ect se 3eredan los mismos mAtodosC
clone, eD(als, <inali6e, getClass, hashCode, noti<', noti<'All, wait, wait, wait

El diagrama de las etensiones de Qrame es el siguienteC
Llegados a este punto" se entiende por quA es importante la etensi'n de las
clases en Java. -ealmente en Qrame se pueden invocar todos los mAtodos
que analizamos antes.
En cam$io" el mAtodo de JQrame de s#ing esC
.or lo tanto Jframe 3ereda todos lo mAtodos de Qrame porque deriva de Aste
%" adems" crea otros.
P+)*+AMA$ APP!E#$ 6 /+AME
P+&ME+ P+)*+AMA. *E'E+A0)+ 0E !&'EA$
import *ava.a#t.:;
import *ava.applet.:;
import *ava.util.:;
pu$lic class Molas etends (pplet
<
int i"c"c%"radio"limite;
-andom rHne# -andom+,;
static final int HP-2T(M(OP H 45EE;
static final int BE-2T(M(OP H 45EE;
Mutton nuevoHne# Mutton+1Las Molas1,;
pu$lic void init+, <
resize+ HP-2T(M(OP"BE-2T(M(OP ,;
add+nuevo,;
@
pu$lic void paint+=rap3ics g,
<
for+radioH5E;radioGH4EE;radio99,
<
g.set7olor+ne# 7olor+Mat3.a$s+r.netLnt+,Z5?W9E,,,;
g.dra#Pval+?E"?E"radio"radio,;
@
@
pu$lic $oolean mouseDo#n+ Event evt"int "int % , <
repaint+,;
return true;
@
@
$E*%'0) P+)*+AMA. %$) 0E /+AME$
&:La 7lausula etends indica Herencia o sea la manera de generar una
su$clase+clase etendida, a partir de una clase+Superclase,.
(3ora" esto indica que podemos utilizar la clase etendida en donde era
legar utilizar la Superclase.
La colecci'n de mAtodos % varia$les como su comportamiento de una clase es lo que se
conoce con el nom$re de contrato o compromiso. .or lo tanto cuando se etiende una clase
se 3eredan los compromisos de la Super7lase
La 7lase Qrame permite en pocas pala$ras poseer como una ventana+lienzo, para realizar
di$u*os.
7uando se instancia un Qrame se e*ecuta automaticamente el m^todo .aint o sea no es
necesaria invocarla. (dem s" el m^todo paint se invoca cada vez que se necesita repintar el
eplorador" producto de una interacci_n del usuario" por e*emplo" Maimizar" Minimizar. Su
parametro es o$*eto =rap3ics" que es como
si fuese nuestro l piz.
El MAtodo -epaint+repintar, se utiliza para llamar el metodo .aint.
El MAtodo -esize+, cam$ia el tama`o de un componente o frame.
El MAtodo MouseDo#n+, es un o$servador" o sea un programa" que es disparado
por un evento; en este caso un evento del Mouse.
:&
import *ava.a#t.:;
pu$lic class 7uadrados etends Qrame <
float ("%("M"%M"7"%7"D"%D;
float (4"%(4"M4"%M4"74"%74"D4"%D4;
float p"q"r;
int centro"%centro;
static final int HP-2T(M(OP H 6EE;
static final int BE-2T(M(OP H 6EE;
pu$lic 7uadrados+, <
q H +float,E.E?;
p H 4 / q;
r H +float,E.T? : + HP-2T(M(OP&5 ,;
centro H HP-2T(M(OP & 5;
%centro H BE-2T(M(OP & 5;
resize+ HP-2T(M(OP"BE-2T(M(OP ,;
s3o#+,;
@
pu$lic void paint+ =rap3ics g , <
( H D H centro / r;
M H 7 H centro 9 r;
%( H %M H %centro / r;
%7 H %D H %centro 9 r;
for+ int iHE; i G 5E; i99 ,
<
g.dra#Line+ +int,("+int,%("+int,M"+int,%M ,;
g.dra#Line+ +int,M"+int,%M"+int,7"+int,%7 ,;
g.dra#Line+ +int,7"+int,%7"+int,D"+int,%D ,;
g.dra#Line+ +int,D"+int,%D"+int,("+int,%( ,;
(4 H p:( 9 q:M;
%(4 H p:%( 9 q:%M;
M4 H p:M 9 q:7;
%M4 H p:%M 9 q:%7;
74 H p:7 9 q:D;
%74 H p:%7 9 q:%D;
D4 H p:D 9 q:(;
%D4 H p:%D 9 q:%(;
( H (4; M H M4; 7 H 74; D H D4;
%( H %(4; %M H %M4; %7 H %74; %D H %D4;
@
@
pu$lic $oolean mouseDo#n+ Event evt"int "int % , <
repaint+,;
return true;
@
pu$lic static void main+ String argsRS , <
ne# 7uadrados+,;
@
@
#E+CE+ P+)*+AMA. MA'E) 0E E(E'#)$
&:EBEOTPS
Evento action+Event evt"P$*ect #3at,C (ccion Tomada
Evento mouseDo#n+Event evt"int "int %,C .ulsacion del $oton del raton
Evento mouseUp+Event evt"int "int %,C Li$eracion del $oton del raton
Evento mouseMove+Event evt"int "int %,C Movimiento del raton
Evento mouseDrag+Event evt"int "int %,C (rrastre del raton
Evento mouseEnter+Event evt"int "int %,C Entrada del raton en un componente
Evento mouseEit+Event evt"int "int %,C Salida del raton de un componente
Evento Ve%Do#n+Event evt"int Ve%,C pulsacion de una tecla
Evento Ve%Up+Event evt"int Ve%,C li$eracion de una tecla
:&
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Evento etends (pplet
<
Mutton amigo;
pu$lic void init+,
<
amigoHne# Mutton+1 $oton 1,;
add+amigo,;
@
pu$lic $oolean action+Event evt"P$*ect #3at,
<
if+evt.targetHHamigo,
<
amigo.setLa$el+1 action 1,;
return true;
@
else
return false;
@
pu$lic $oolean mouseDo#n+Event evt"int "int %,
<
amigo.setLa$el+1 mouseDo#n 1,;
return true;
@
pu$lic $oolean Ve%Do#n+Event evt"int Ve%,
<
amigo.setLa$el+1 tecla1 ,;
return true;
@
pu$lic $oolean mouseEnter+Event evt"int "int %,
<
amigo.setLa$el+1so$re el1,;
return true;
@
@
C%A+#) P+)*+AMA. *E'E+A0)+ 0E !&'EA$
&: Los (dministradores de diseo son clases que a%udan a u$icar componentes
dentro de una Bentana (pplet
SetLa%out. Esta$lece el tipo de administrador de diseo.
Qlo#La%out. Se utiliza para colocar los componentes dentro de un panel de componentes
"adems" los u$ica en el mismo orden en el cual se agregan.
la sentencia Qlo#La%out+ Qlo#La%out.7EOTE-"E"E ," indica como se alinea el componente
en este caso centro % los dos siguientes parmetros los espacios tanto 3orizontal %
vertical entre componentes
MorderLa%out. Esta$lece la posici'n que puede u$icar los componentes de un panel.
Oort3CSuperior"Sout3HSur"EastHLzquierda")estHDerec3a"7enterHcentro
:&
import *ava.a#t.:;
import *ava.applet.(pplet;
pu$lic class QigLinea etends (pplet <
private TetQield tf4"tf%4"tf5"tf%5;
pu$lic void init+, <
setMacVground+ 7olor.#3ite,;
setLa%out+ ne# MorderLa%out+, ,;
.anel p H ne# .anel+,;
p.setLa%out+ ne# Qlo#La%out+ Qlo#La%out.7EOTE-"E"E , ,;
p.add+ ne# La$el+ 1dra#Line+ 1, ,;
p.add+ tf4 H ne# TetQield+6, ,;
p.add+ ne# La$el+ 1"1 , ,;
p.add+ tf%4 H ne# TetQield+6, ,;
p.add+ ne# La$el+ 1"1 , ,;
p.add+ tf5 H ne# TetQield+6, ,;
p.add+ ne# La$el+ 1"1, ,;
p.add+ tf%5 H ne# TetQield+6, ,;
p.add+ ne# La$el+ 1 ,1 , ,;
add+ 1Oort31"p ,;
&& En la parte inferior colocamos un $ot'n para que cuando
&& lo pique el usuario se pinte la l!nea que corresponda a
&& los parmetros de los campos de teto
p H ne# .anel+,;
p.add+ ne# Mutton+ 1 .intar 1 , ,;
add+ 1Sout31"p ,;
tf4.setTet+ 14E1 ,;tf%4.setTet+ 14E1 ,;tf5.setTet+ 14EE1 ,;tf%5.setTet+ 14EE1 ,;
@
&& Este mAtodo se encarga de recoger los valores numAricos que
&& se introduzcan en los campos de teto. Si se meten letras
&& o cualquier cosa rara" toma como valor E
private int parseTetQield+ TetQield tf , <
int n;
tr% <
n H Lnteger.parseLnt+ tf.getTet+, ,;
@ catc3+ Oum$erQormatEception nfe , <
tf.setTet+ 1E1 ,;n H E;
@
return+ n ,;
@
&& So$recargamos el mAtodo de pintura de nuestra interface
&& Qigura" que como es la que implementa la clase Tut7anvas"
&& 3ar que nos aparezca en pantalla la imagen correspondiente
&& a la l!nea que indiquen los parmetros fi*ados
pu$lic void paint+ =rap3ics g , <
int 4 H parseTetQield+ tf4 ,;
int %4 H parseTetQield+ tf%4 ,;
int 5 H parseTetQield+ tf5 ,;
int %5 H parseTetQield+ tf%5 ,;
if+4>HE aa %4>HE aa 5>HE aa %5>HE,
<
g.set7olor+7olor.red,;
g.dra#Line+ 4"%4"5"%5 ,;
@
@
&& 7ontrolamos el evento de repintado de la l!nea
pu$lic $oolean action+ Event evt"P$*ect o$* , <
if+ o$*.equals+ 1 .intar 1 , ,
<
repaint+,;
return+ true ,;
@
return+ false ,;
@
@
Q%&'#) P+)*+AMA. *E'E+A0)+ 0E !&'EA$
import *ava.a#t.:;
import *ava.applet.(pplet;
pu$lic class Qigura etends (pplet <
private TetQield tf4"tf%4"tf5"tf%5;
private Mutton nuevo;
int 4"%4"5"%5;
pu$lic void init+, <
add+ ne# La$el+ 1dra#Line+ 1, ,;
add+ tf4 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1 , ,;
add+ tf%4 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1 , ,;
add+ tf5 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1, ,;
add+ tf%5 H ne# TetQield+6, ,;
add+ ne# La$el+ 1 ,1 , ,;
nuevoHne# Mutton+1.intar1,;
add+nuevo,;
&& En la parte Superior colocamos un $ot'n para que cuando
&& lo pique el usuario se pinte la l!nea que corresponda a
&& los parmetros de los campos de teto
tf4.setTet+ 14E1 ,;
tf%4.setTet+ 14E1 ,;
tf5.setTet+ 14EE1 ,;
tf%5.setTet+ 14EE1 ,;
@
&& Este mAtodo se encarga de recoger los valores numAricos que
&& se introduzcan en los campos de teto. Si se meten letras
&& o cualquier cosa rara" toma como valor E
private int puntos+ TetQield tf , <
int n;
tr% <
n H Lnteger.parseLnt+ tf.getTet+, ,;
@ catc3+ Oum$erQormatEception nfe , <
tf.setTet+ 1E1 ,;
n H E;
@
return+ n ,;
@
pu$lic void paint+ =rap3ics g , <
g.dra#Line+ 4"%4"5"%5 ,;
@
&& 7ontrolamos el evento de repintado de la l!nea
pu$lic $oolean action+ Event evt"P$*ect o$* , <
if+evt.targetHHnuevo,
<
4 H puntos+tf4 ,;
%4 H puntos+tf%4 ,;
5 H puntos+tf5 ,;
%5 H puntos+tf%5 ,;
if+4>HE aa %4>HE aa 5>HE aa %5>HE,
repaint+,;
return+ true ,;
@
return+ false ,;
@
@
$E7#) P+)*+AMA. $E!ECC&)'A0)+ 0E /&*%+A
import *ava.a#t.:;
import *ava.applet.(pplet;
pu$lic class Qigura etends (pplet <
private TetQield tf4"tf%4"tf5"tf%5;
private Mutton nuevo;
int 4"%4"5"%5;
pu$lic void init+, <
add+ ne# La$el+ 1dra#Line+ 1, ,;
add+ tf4 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1 , ,;
add+ tf%4 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1 , ,;
add+ tf5 H ne# TetQield+6, ,;
add+ ne# La$el+ 1"1, ,;
add+ tf%5 H ne# TetQield+6, ,;
add+ ne# La$el+ 1 ,1 , ,;
nuevoHne# Mutton+1.intar1,;
add+nuevo,;
&& En la parte Superior colocamos un $ot'n para que cuando
&& lo pique el usuario se pinte la l!nea que corresponda a
&& los parmetros de los campos de teto
tf4.setTet+ 14E1 ,;
tf%4.setTet+ 14E1 ,;
tf5.setTet+ 14EE1 ,;
tf%5.setTet+ 14EE1 ,;
@
&& Este mAtodo se encarga de recoger los valores numAricos que
&& se introduzcan en los campos de teto. Si se meten letras
&& o cualquier cosa rara" toma como valor E
private int puntos+ TetQield tf , <
int n;
tr% <
n H Lnteger.parseLnt+ tf.getTet+, ,;
@ catc3+ Oum$erQormatEception nfe , <
tf.setTet+ 1E1 ,;
n H E;
@
return+ n ,;
@
pu$lic void paint+ =rap3ics g , <
g.dra#Line+ 4"%4"5"%5 ,;
@
&& 7ontrolamos el evento de repintado de la l!nea
pu$lic $oolean action+ Event evt"P$*ect o$* , <
if+evt.targetHHnuevo,
<
4 H puntos+tf4 ,;
%4 H puntos+tf%4 ,;
5 H puntos+tf5 ,;
%5 H puntos+tf%5 ,;
if+4>HE aa %4>HE aa 5>HE aa %5>HE,
repaint+,;
return+ true ,;
@
return+ false ,;
@
@
$EP#&M) P+)*+AMA. CA+*A+ %'A &MA*E'
import *ava.a#t.:;
import *ava.applet.(pplet;
pu$lic class Lmagen etends (pplet <
Lmage pepe;
&& Toma la imagen de Disco
pu$lic void init+, <
pepe H getLmage+ getDocumentMase+,"1.epe.gif1 ,;
@
&& N la pinta en la pantalla" con un $orde de ? piels en la
&& parte superior e izquierda
pu$lic void paint+ =rap3ics g , <
g.dra#Lmage+ pepe"?"?"t3is ,;
@
@
$EP#&M) P+)*+AMA. ,&$#)*+AMA BA$&C)
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Marras etends (pplet
<
final int datosH45;
final dou$le datosfH45.E;
final int puntosHXEE;
final dou$le puntosfHXEE.E;
final dou$le grosorH5E.E;
final int maH?EE;
final dou$le mafH?EE.E;
final dou$le minH4EE.E;
final dou$le min%H4EE.E;
final dou$le maH?EE.E;
final dou$le ma%H?EE.E;
final dou$le escalaHpuntosf&maf;
dou$le dH+puntosf/+datosf:grosor,,&datosf;
dou$le (RSHne# dou$leRdatosS;
dou$le 3"%";
int i"d;
pu$lic void init+,
<
setSize+WEE"WEE,;
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.-ED,;
g.dra#Line+4EE"4EE"4EE"?EE,;
g.dra#Line+4EE"?EE"?EE"?EE,;
g.set7olor+7olor.)HLTE,;
g.fill-ect+4E4"4EE"6TT"6TT,;
Hd9min;
g.set7olor+7olor.=-EEO,;
for+iHE;iG(.lengt3;i99,
<
(RiSHMat3.random+,:puntosf;
3H(RiS:escala;
%Hma%/3;
g.fill-ect++int, "+int, %"+int,grosor"+int, 3,;
H9grosor9d;
@
@
@
)C#A() P+)*+AMA. ,&$#)*+AMA BA$&C) C)' %'A !&$#A
0E 0A#)$
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Marras4 etends (pplet
<
final int datosH45;
final dou$le datosfH45.E;
final int puntosHXEE;
final dou$le puntosfHXEE.E;
final dou$le grosorH5E.E;
final int maH?EE;
final dou$le mafH?EE.E;
final dou$le minH4EE.E;
final dou$le min%H4EE.E;
final dou$le maH?EE.E;
final dou$le ma%H?EE.E;
final dou$le escalaHpuntosf&maf;
dou$le dH+puntosf/+datosf:grosor,,&datosf;
List LHne# List+,;
dou$le 3"%";
int i"d;
pu$lic void init+,
<
setSize+WEE"WEE,;
for+iH4;iGHdatos;i99,
L.addLtem+ne# String+,.valuePf+Mat3.random+,:maf,,;
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.-ED,;
g.dra#Line+4EE"4EE"4EE"?EE,;
g.dra#Line+4EE"?EE"?EE"?EE,;
g.set7olor+7olor.)HLTE,;
g.fill-ect+4E4"4EE"6TT"6TT,;
Hd9min;
g.set7olor+7olor.=-EEO,;
for+iHE;iGdatos;i99,
<
3HQloat.parseQloat+L.getLtem+i,,:escala;
%Hma%/3;
g.fill-ect++int, "+int, %"+int,grosor"+int, 3,;
H9grosor9d;
@
@
@
0EC&M). ,&$#)*+AMA BA$&C) C)' !&$#A$
0E 0A#)$ +E!AC&)'A0A$
import *ava.a#t.:;
import *ava.applet.:;
import *ava.a#t.event.:;
pu$lic class Marras5 etends (pplet implements (ctionListener
<
List lista;
final int datosH45;
final dou$le datosfH45.E;
final int puntosHXEE;
final dou$le puntosfHXEE.E;
final dou$le grosorH5E.E;
final int maH?EE;
final dou$le mafH?EE.E;
final dou$le minH4EE.E;
final dou$le min%H4EE.E;
final dou$le maH?EE.E;
final dou$le ma%H?EE.E;
final dou$le escalaHpuntosf&maf;
dou$le dH+puntosf/+datosf:grosor,,&datosf;
List list4Hne# List+,;
List list5Hne# List+,;
List list6Hne# List+,;
List listXHne# List+,;
List list?Hne# List+,;
dou$le 3"%";
int i"d"indiceHE;
pu$lic void init+,
<
lista H ne# List+X" false,;
for+iH4TTT;iGH5EE6;i99,
lista.addLtem+ne# String+,.valuePf+i,,;
setSize+WEE"WEE,;
pasar+list4,;
pasar+list5,;
pasar+list6,;
pasar+listX,;
pasar+list?,;
add+lista,;
lista.add(ctionListener+t3is,;
@
pu$lic void action.erformed +(ctionEvent ev,
<

if +ev.getSource+,HHlista,
indiceHlista.getSelectedLnde+,;
repaint+,;
@
pu$lic void pasar+List L,
<
L.clear+,;
for+iH4;iGHdatos;i99,
L.addLtem+ne# String+,.valuePf+Mat3.random+,:maf,,;
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.-ED,;
g.dra#Line+4EE"4EE"4EE"?EE,;
g.dra#Line+4EE"?EE"?EE"?EE,;
g.set7olor+7olor.)HLTE,;
g.fill-ect+4E4"4EE"6TT"6TT,;
Hd9min;
g.set7olor+7olor.=-EEO,;
for+iHE;iGdatos;i99,
<
s#itc3+indice,
<
case 4C
3HQloat.parseQloat+list4.getLtem+i,,:escala;
$reaV;
case 5C
3HQloat.parseQloat+list5.getLtem+i,,:escala;
$reaV;
case 6C
3HQloat.parseQloat+list6.getLtem+i,,:escala;
$reaV;
case XC
3HQloat.parseQloat+listX.getLtem+i,,:escala;
$reaV;
case ?C
3HQloat.parseQloat+list?.getLtem+i,,:escala;
$reaV;
@
if+indice>HE,
<
@
%Hma%/3;
g.fill-ect++int, "+int, %"+int,grosor"+int, 3,;
H9grosor9d;
@
@
@
')(E') P+)*+AMA. ,&$#)*+AMA BA$&C) C)' A+C,&()$
C)' APP!E#$
Es necesario crear por $locV de notas arc3ivos con datos formatos reales separados
por comas de la siguiente formaC
456.E" UT.?W" YU.E" 456.4" 5?6.5" X45.E
% se de$en guardar como ao +por e*emplo 4TTU.tt,. (dems" los arc3ivos se de$en
almacenar donde esta el arc3ivo class+ en esta caso MarrasX.class,.
import *ava.a#t.:;
import *ava.applet.:;
import *ava.io.:;
import *ava.util.StringToVenizer;
pu$lic class MarrasX etends (pplet <
final int puntosHXEE;
final dou$le puntosfHXEE.E;
final dou$le grosorH5E.E;
final int maH?EE;
final dou$le mafH?EE.E;
final dou$le minH4EE.E;
final dou$le min%H4EE.E;
final dou$le maH?EE.E;
final dou$le ma%H?EE.E;
dou$le escala"d"datosf;
Qile-eader arc3ivo;
List ListaHne# List+,;
List Lista4Hne# List+,;
dou$le 3"%";
int i"d"datosHE;
pu$lic void init+,
<
inicializa+,;
setSize+WEE"WEE,;
for+iH4TTT;iGH5EE6;i99,
Lista.addLtem+ne# String+,.valuePf+i,,;
add+Lista,;
@
pu$lic void inicializa+,
<
escalaHpuntosf&maf;
dH+puntosf/+datosf:grosor,,&datosf;
@
pu$lic void $a*ar+String nomarc3,
<
Qile arc3Hne# Qile+nomarc3,;
if+>arc3.eists+,,
s3o#Status+1(rc3ivo 19nomarc391 no eiste1,;
else
<
tr%
<
arc3ivoHne# Qile-eader+nomarc3,;
@
catc3+QileOotQoundEception e,<@
StringMuffer MHne# StringMuffer+,;
for+iH4;iGHarc3.lengt3+,;i99,
tr%
<
M.append++c3ar, arc3ivo.read+,,;
@
catc3+LPEception e,<@
StringToVenizer JHne# StringToVenizer+M.toString+,"1"1,;
datosHJ.countToVens+,;
Lista4.clear+,;
#3ile+J.3asMoreToVens+,,
Lista4.addLtem+J.netToVen+,,;
@
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.-ED,;
g.dra#Line+4EE"4EE"4EE"?EE,;
g.dra#Line+4EE"?EE"?EE"?EE,;
g.set7olor+7olor.)HLTE,;
g.fill-ect+4E4"4EE"6TT"6TT,;
Hd9min;
g.set7olor+7olor.=-EEO,;
if+datos>HE,
<
datosfH+dou$le, datos;
inicializa+,;
for+iHE;iGdatos;i99,
<
3HQloat.parseQloat+Lista4.getLtem+i,,:escala;
%Hma%/3;
g.fill-ect++int, "+int, %"+int,grosor"+int, 3,;
H9grosor9d;
@
@
@
pu$lic $oolean 3andleEvent +Event ev,
<
String S;
s3o#Status+ne# String+,.valuePf+ev.id,,;
if +ev.targetHHLista aa ev.idHHYE4,
<
SHLista.getLtem+Lista.getSelectedLnde+,,91.tt1;
$a*ar+S,;
repaint+,;
@
return true;
@

@
0EC&M) P+)*+AMA. A(&$) 0E 'E)' C)' /+AME
import *ava.a#t.:;
import *ava.applet.:;
import *ava.util.:;
pu$lic class Oeon etends Qrame
<
int r"v"a"i;
-andom -Hne# -andom+,;
pu$lic Oeon+,
<
setSize+UEE"WEE,;
setBisi$le+true,;
@
pu$lic void paint+=rap3ics g,
<
rHMat3.a$s+-.netLnt+,Z5?W9E,;
vHMat3.a$s+-.netLnt+,Z5?W9E,;
aHMat3.a$s+-.netLnt+,Z5?W9E,;
7olor coloresHne# 7olor+r" v" a,;
g.set7olor+colores,;
g.setQont+ne# Qont+1(rial1" Qont.MPLD" 5U,,;
g.dra#String+1.-P=-(M(7LPO LEO=U(JE J(B(1" ?E" WE ,;
for+iH4;iGH6EEEEEE;i99,;
repaint+,;
@
pu$lic static void main+StringRS args,
<
ne# Oeon+,;
@
@
0EC&M) P+&ME+ P+)*+AMA. &MA*E'E$ C)' /+AME
import *ava.a#t.:;
import *ava.applet.:;
pu$lic class Lmagenes etends Qrame <
.ol%gon .Hne# .ol%gon+,;
pu$lic Lmagenes+, <
..add.oint+5EE"X?E,;
..add.oint+XEE"5?E,;
..add.oint+WEE"X?E,;
resize+UEE"WEE,;
setBisi$le+true,;
@
pu$lic void paint+=rap3ics g, <
g.set7olor+7olor.orange,;
g.setQont+ne# Qont+1(rial1"Qont.MPLD"6E,,;
g.dra#String+1LM(=EOES>1" 5UE" WE ,;
g.set7olor+7olor.$lue,;
g.setQont+ne# Qont+1(rial1"Qont.MPLD"4X,,;
g.dra#String+1-E7T(O=ULP ([UL>1" ?E" 4EE,;
g.dra#-ect+Y?"45E"?E"?E,;
g.set7olor+7olor.green,;
g.dra#String+1-E7T(O=ULP -ELLEOP BE-DE1" 5?E" 4EE,;
g.fill-ect+5Y?"45E"?E"?E,;
g.set7olor+7olor.$lue,;
g.dra#String+17L-7ULP -ELLEOP ([UL1" ??E" 4EE,;
g.fillPval+?Y?"45E"?E"?E,;
g.set7olor+7olor.c%an,;
g.dra#String+1T-L(O=ULP -ELLEOP 7N(O1" 6EE" 56E,;
g.fill.ol%gon+.,;
@
pu$lic static void main+StringRS args,
<
ne# Lmagenes+,;
@
@
0EC&M) $E*%'0) P+)*+AMA. CA+*A 0E %' P+)*+AMA
#E7#) E' %' A+EA 0E #E7#)
import *ava.a#t.:;
import *ava.applet.:;
import *ava.io.:;
pu$lic class (rc3ivoLista etends Qrame<
static Qile-eader arc3ivo;
static Qile Q;
static String lista(rc3ivosRS;
static Qile arc3ivosHne# Qile+1.1,;
Tet(rea THne# Tet(rea+,;
List ListaHne# List+,;
Mutton $otonHne# Mutton+1 S ( L L -1,;
int i"d"datosHE;
.anel .Hne# .anel+,;
pu$lic (rc3ivoLista+,
<
THne# Tet(rea+5X" YE,;
setSize+4EEE"WEE,;
for+iHE;iGlista(rc3ivos.lengt3;i99,
Lista.addLtem+lista(rc3ivosRiS.toString+,,;
..add+Lista,;
..add+T,;
..add+$oton,;
add+.,;
s3o#+,;
@
pu$lic String $a*ar+String nomarc3,
<
Qile arc3Hne# Qile+nomarc3,;
if+>arc3.eists+,,
return 1(rc3ivo 19nomarc391 no eiste1;
tr%
<
arc3ivoHne# Qile-eader+nomarc3,;
@
catc3+QileOotQoundEception e,
<
return 1(rc3ivo 19nomarc391 no eiste1;
@
StringMuffer MHne# StringMuffer+,;
tr%
<
for+iH4;iGHarc3.lengt3+,;i99,
M.append++c3ar, arc3ivo.read+,,;
arc3ivo.close+,;
@
catc3+LPEception e,
<
&&return 1Error en Lectura de (rc3ivo1;
@
return M.toString+,;
@
pu$lic void paint+=rap3ics g,
<
@
pu$lic $oolean 3andleEvent +Event ev,
<
String SHnull;
if +ev.targetHHLista aa ev.idHHYE4,
<
SHLista.getLtem+Lista.getSelectedLnde+,,;
T.setTet+$a*ar+S,,;
@
if+ev.targetHH$oton,
S%stem.eit+E,;
return true;
@
pu$lic static void main+StringRS args,
<
lista(rc3ivosHarc3ivos.list+ne# Qiltro+1.*ava1,,;
ne# (rc3ivoLista+,;
@
@
class Qiltro implements QilenameQilter
< String etension;
pu$lic Qiltro +String et, <
t3is.etension Het;
@
pu$lic $oolean accept +Qile dir" String name, <
return name.ends)it3+etension,;
@
@

También podría gustarte