Está en la página 1de 12

EJERCICIO GUIADO.

JAVA: PROGRAMACIN MDI Programacin SDI y Programacin MDI


Todo programa tiene una interfaz grfica de usuario (gui) la cual permite a este manejar el programa de forma sencilla. La interfaz grfica de usuario consta de la ventana principal, cuadros de dilogo, botones, cuadros de texto, etc Seg n el tipo de interfaz !ue tenga el programa, las aplicaciones se suelen dividir en dos tipos" #plicaciones S$% & #plicaciones '$%. Aplicacion ! SDI "Singl Doc#m n$ In$ r%ac & S$% se puede traducir como interfaz de documento nico. (sto !uiere decir !ue las aplicaciones S$% solo pueden mostrar el contenido de un documento a la vez. )n ejemplo prctico de aplicaci*n S$% es el bloc de notas de +indo,s. Si en el bloc de notas !uieres escribir un nuevo documento, tienes !ue cerrar antes el documento con el !ue ests trabajando, &a !ue este programa no admite el manipular varios escritos a la vez. -asta el momento, las aplicaciones de manejo de documentos !ue .emos realizado .asta a.ora .an sido de tipo S$%. Aplicacion ! MDI "M#l$ipl Doc#m n$o In$ r%ac & '$% se puede traducir como interfaz de m ltiples documentos. (sto !uiere decir !ue las aplicaciones '$% pueden mostrar varios documentos a la vez. )n ejemplo prctico de aplicaci*n '$% es el programa de reto!ue fotogrfico /.otos.op. (n 0l, el usuario puede abrir varias fotos & trabajar con todas ellas. Las aplicaciones '$% normalmente constan de una ventana principal, la cual, puede contener otras ventanas interiores. 1ada documento !ue se abre aparece en una ventana interior. (n este ejercicio guiado, se explicarn las nociones bsicas para crear una aplicaci*n '$% en 2ava con 3et4eans.

EJERCICIO GUIADO ' Se pretende crear un visor de imgenes '$%, es decir, !ue permita la visualizaci*n de varias imgenes a la vez. (l programa constar de una ventana principal con un men . Las opciones de este men permitirn al usuario abrir varias imgenes & cerrarlas a su gusto. #l ser un pro&ecto '$%, las imgenes se abrirn en ventanas internas. (stas ventanas internas tendrn !ue ser dise5adas de forma adecuada. /ara crear este pro&ecto, tendremos !ue seguir tres pasos generales" 6 6 6 $ise5o de la ventana principal. $ise5o de las ventanas internas. /rogramaci*n de la ventana principal 7 internas.

Di! (o ) la * n$ana principal 8. 1rea un nuevo pro&ecto. (l nombre del pro&ecto ser VisorFotos. #5ade un pa!uete llamado paqueteprincipal. $entro de dic.o pa!uete a5ade un 29rame llamado ventanaprincipal.

:. #5ade a la ventana principal una barra de men s, con una nica opci*n Archivo, !ue contenga a su vez las siguiente opciones"

#signa los siguientes nombres a cada elemento del men "

;. (stablece un la&out de tipo BorderLayout al 29rame. <ecuerda !ue este tipo de distribuci*n divide la ventana en cinco zonas" norte, sur, este, oeste & centro.

=. (n la zona central de la ventana principal colocaremos un panel, pero no ser un 2/anel, como siempre, sino otro tipo de panel. $ebes colocar un panel del tipo 2$es>top/ane"

(ste tipo de panel es usado como contenedor de las ventanas internas de una aplicaci*n '$%. (n 3et4eans este tipo de panel se muestra de color azul, para distinguirlo de los paneles normales, por eso, cuando a5adas el panel al 29rame este !uedar as?"

@. 1mbiale el nombre al 2$es>top/ane & as?gnale el nombre panelInterno"

A. Si ejecutas el programa a.ora, vers !ue la ventana sale reducida al m?nimo tama5o posible. (sto lo vamos a evitar .aciendo !ue la ventana aparezca maximizada al ejecutarse el programa. Tambi0n le asignaremos un tama5o inicial. /ara ello, acude al constructor del 29rame & programa lo siguiente"

Llamada a un m0todo ConfiguracionVentana

/rogramaci*n de dic.o m0todo.

1omo ves, en el constructor se llama a un m0todo ConfiguracionVentana & en este m0todo se asigna un tama5o por defecto a la ventana de BCCxACC & se maximiza.

Di! (o ) la! * n$ana! in$ rna! Se pretende !ue cuando se abra una imagen, el programa muestre una ventana interna !ue contenga la imagen & nada ms. La barra de t?tulo de esta ventana interna contendr el camino de la imagen. /ara dise5ar la ventana interna de la aplicaci*n, sigue los pasos !ue se indican a continuaci*n" 7. )na ventana interna de una aplicaci*n '$% es un objeto de la clase 2%nternal9rame. Ser necesario a5adir esta clase al pro&ecto. /ara ello, .az clic con el derec.o sobre el paqueteprincipal & elige Nuevo Archivo/Carpeta.

B. Luego elige Formularios G I !ava & dentro de esta categor?a Formulario !InternalFrame.

D. (l nombre !ue le pondremos a este tipo de formulario ser el de ventanainterna.

8C. Si observas la ventana de pro&ecto, vers !ue a.ora tenemos dos clases" la ventana principal, & la ventana interna. #.ora dise5aremos la ventana interna, para ello, .az doble clic sobre ventanainterna.

88. 1omo se dijo anteriormente, las ventanas internas mostrarn simplemente la imagen !ue se abra. /ara ello, solo .ace falta introducir una eti!ueta (2Label) !ue ser la !ue contenga la imagen. (sta eti!ueta debe ocupar toda la ventana, no tendr ning n texto dentro, & su nombre ser etiImagen.

La eti!ueta se llamar etiImagen

E ocupar todo el !InternalFrame 8:. (n las .ojas guiadas anteriores, se .a .ablado de la programaci*n orientada a objetos, & se .a comentado !ue los objetos poseen propiedades. (stas propiedades son bsicamente variables globales internas. /ara poder acceder a estas propiedades, es necesario programar m0todos set. /ues bien, la eti!ueta etiImagen de la clase ventanainterna, no es mas !ue una propiedad de la ventana interna, & para poder trabajar con ella, ser necesario programar un m0todo set !ue permita modificar la eti!ueta a nuestro antojo. 4sicamente, este m0todo set debe ser capaz de introducir en la eti!ueta una imagen. -aremos !ue este m0todo reciba como parmetro el camino de la imagen a mostrar. 8;. #s? pues, entra en la zona de c*digo de la ventanainterna & a5ade despu0s del constructor el siguiente m0todo"

'0todo para acceder a la eti!ueta etiImagen

8=. (n la programaci*n '$%, ser .abitual crear m0todos para poder acceder a los distintos elementos de la ventana interna (eti!uetas, cuadros de texto, etc) (n otras ocasiones, tendremos !ue crear m0todos get para obtener informaci*n de las ventanas internas. (s algo mu& similar a la programaci*n de dilogos propios !ue se vio en .ojas anteriores. 8@. 4ien, con la programaci*n de este m0todo de acceso a la eti!ueta de la ventana interna, .emos terminado con el dise5o de esta ventana, a.ora empezaremos a programar la ventana principal. Fuelve a ella .aciendo doble clic sobre la ventanaprincipal en la zona de pro&ectos"

Programacin ) la * n$ana principal Se pretende a.ora programar la opci*n A"rir del men de forma !ue se elija el fic.ero de imagen a mostrar & se muestre este en una ventana interna. La opci*n Cerrar del men permitir cerrar la ventana interna activa en un momento determinado. Sigue los pasos !ue se describen a continuaci*n"

8A. Ea estamos preparados para programar las opciones del men . (mpezaremos por la opci*n #brir. #ccede al action#erformed de la opci*n #brir & programa lo siguiente"

La opci*n #brir se encargar de abrir un fic.ero de imagen & mostrarlo en una ventana interna del programa. Lo primero !ue .ace esta opci*n es mostrar el cuadro de dilogo #brir, !ue se usa para indicar el fic.ero !ue se !uiere abrir. Se crea un objeto del tipo 29ile1.ooser a trav0s de la l?nea" JFileChooser abrir = new JFileChooser(); Luego se le da la orden de !ue muestre el cuadro de dilogo #brir. La variable "oton recoge el bot*n pulsado por el usuario (#ceptar 7 1ancelar) int boton = abrir.showOpenDialog(null); Luego, a trav0s de un if, compruebo si se .a pulsado el bot*n #ceptar if (boton==JFileChooser.APPROV !OP"#O$) % & $entro de este if tendremos !ue programar la acci*n correspondiente a abrir la imagen & mostrarla en pantalla. Famos a ello. 8G. /rograma dentro del if anterior lo siguiente. (l c*digo se comentar a continuaci*n.

#tento a este c*digo, por!ue define la creaci*n de ventanas internas, conteniendo la imagen elegida para mostrar. (s el coraz*n del programa La primera instrucci*n, crea una ventana interna llamada vi. 1omo puedes observar, es la creaci*n de un objeto vi de la clase ventanainterna. 'entanainterna 'i = new 'entanainterna(); Lo siguiente !ue se .ace con el objeto vi creado, es definir sus caracter?sticas como ventana. 1oncretamente se decide !ue sea una ventana con posibilidad de cambiar de tama5o (set$esi%a"le), una ventana !ue pueda ser maximizada (set&a'imi%a"le), una ventana !ue pueda ser minimizada (setIconifia"le) & finalmente !ue pueda ser cerrada (setClosa"le) 'i.setResi(able(true); 'i.set)a*i+i(able(true); 'i.set#,onifiable(true); 'i.setClosable(true); )na vez definidas dic.as caracter?sticas de la ventana interna, esta se a5ade al panel interno de la ventana principal, al !ue le dimos el nombre panelInterno. panel#nterno.a--('i); #.ora .a& !ue introducir la imagen elegida dentro de la eti!ueta de la ventana. /rimero .a& !ue recoger el camino del fic.ero de imagen elegido en el cuadro de dilogo a"rir. .tring ,a+ino = abrir.get.ele,te-File().to.tring(); #.ora aprovec.amos el m0todo setImagen !ue programamos oportunamente dentro de la clase ventanainterna para situar dic.a imagen dentro de la eti!ueta. 'i.set#+agen(,a+ino);

1olocamos el camino de la imagen en la barra de t?tulo de la ventana interna" 'i.set"itle(,a+ino); 9inalmente .acemos visible la ventana interna. 'i.setVisible(true); 8B. (jecuta el programa & prueba a abrir varios fic.eros de imagen. Hbserva la creaci*n de las ventanas internas. Hbserva como todas tienen el mismo aspecto (una eti!ueta nica en la ventana conteniendo la imagen) Hbserva la posibilidad de moverlas, cambiarlas de tama5o, maximizarlas, minimizarlas & cerrarlas. Hbserva como todas las ventanas internas estn encerradas dentro de los l?mites del panel interno de la ventana principal"

8D. (ste pro&ecto se usar en las pr*ximas .ojas. Iurdalo.

CONC+USIN +a programacin MDI con!i!$ n cr ar aplicacion ! capac ! ) a,rir *ario! %ic- ro! y mo!$rarlo! n )i!$in$a! * n$ana! in$ rna!. Una aplicacin MDI c# n$a con )o! l m n$o! ,.!ico!: / Un pan l in$ rno JD !0$opPan 1 l c#al con$ n)r. la! * n$ana! in$ rna!. / Una cla! ) l $ipo JIn$ rnal2ram 1 la c#al ) %inir. l )i! (o ) la! * n$ana! in$ rna!. +a cla! JIn$ rnal2ram 3# a(a)amo!1 $ n)r. l nom,r 3# 3# ramo! a!ignarl y no! ! r*ir. ) plan$illa para cr ar la! * n$ana! in$ rna! ) n# !$ro proy c$o. E!$a cla! po)r. $ n r m4$o)o! in$ rno! para acc ) r a lo! l m n$o! ) la! * n$ana! in$ rna!. D !) la * n$ana principal1 ! cr ar.n o,5 $o! ) la cla! * n$ana in$ rna1 y ! ) %inir.n opcion ! r la$i*a! a la po!i,ili)a) ) ma6imi7ar1 c rrar1 minimi7ar1 $c1 )ic-a! * n$ana!. D !) la * n$ana principal ! #!ar.n lo! m4$o)o! programa)o! n la * n$ana in$ rna para po) r man 5arla con %acili)a).

También podría gustarte