Sie sind auf Seite 1von 10

Pensamientos, solo eso

Un hobbie se vuelve aburrido cuando se pretende hacer de ello una profesin, cuando se lo quiere formalizar. Esta es una pagina personal, un blog, una forma de distenderme!

mircoles, agosto 29, 2007


Ventanas en Java I: JFrame, propiedades, centrar, confirmar al cerrar, eventos

La primera distincin que debemos hacer entre las ventas que vamos a realizar es si las mismas son modales o no. Las modales son aquellas ventas que si o si deben tener una respuesta del usuario antes de continuar, como por ejemplo aquellas ventanas donde se nos pide que confirmemos si queremos guardar un archivo o no. Todas las dems ventanas son no modales. En estos pequeos tutriales, voy a desarrollar JFrames, IInternalFrames y JDialog En el caso de las JFrame las mismas son no modales. 1. JFrame Para comenzar a crear un JFrame tenemos que crear una ventana que extienda la clase JFrame e implemente la interfaz ActionListener que nos permitir captar los eventos de los usuarios sobre los componentes Swing que vamos a utilizar (el botn). public class FrameInicial extends JFrame implements ActionListener{ //variables globales en este caso Irn todos los componentes swing //Constructor de la case //Mtodos } Debemos recordar que siempre que implementemos la interfaz AL deberemos declarar el mtodo actionPerformed(AcrionEvente evento) El constructor de la clase tendr la forma:

public FrameInicial() { try { metodoSiguiente();// aqu vamos a poner las propiedades y componentes this.centrar(); //mtodo mi para centrar /*confirmacion de salida*/ this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { confirmarSalida(); } }); this.setVisible(true);//hacemos visible el frame } catch (Exception e) { e.printStackTrace(); } } El metodoSiguiente() es un mtodo que cree para ordenar todas las propiedades y los componentes que contendr nuestra ventana. Centrar() es un mtodo que nos permitir centrar la ventana de acuerdo a la resolucin que tenga nuestro monitor. Por defecto en java todas las ventanas aparecen en el extremo superior izquierdo. En cuanto a solicitar una confirmacin a la hora de salir lo primero que tenemos que indicar es que la ventana no va a realiza ninguna accin cuando se da el evento de cierre, si esto no se especifica, la ventana sale directamente sin realizar ninguna accin. Esto es en el caso en que tenemos un frame que es el principal de nuestra aplicacin y queremos pedirle al usuario que confirme la salida cuando hizo clic en la crucecita del frame. Lo hacemos con el metodo: setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) confirmarSalida() ser el mtodo que pregunte si deseamos salir o no. Finalmente debemos hacer visible el frame con el mtodo setVisible(true).

1.1 metodoSiguiente()
En este caso vamos a agregarle al frame una label y un botn para cerrar, a medida que vallamos avanzando en los distintos frames voy a ir agregando distintos componentes. Es una buena costumbre nombrar a los componentes de forma representativa. Por ejemplo las etiquetas pueden comenzar con lbl_nombre o los botones con btn_nombre, etc. Ya que cuando nuestra aplicacin crezca se puede hacer complicado si no tenemos nombre representativos. Otra aclaracin es que los componente ya fueron declarados e inicializados globalmente en la case.

private void metodoSiguiente() throws Exception { this.getContentPane().setLayout( null );//la forma de organizar los componentes this.setSize(new Dimension(385, 300));//el tamao de la ventana this.setTitle("Hola Swing");//el titulo btn_cerrar.setText("Cerrar");//el boton cerrar btn_cerrar.setBounds(new Rectangle(250, 220, 120, 25));//tamao del botn lbl_hola.setText("Hola Swing");//lo que la etiqueta dir lbl_hola.setBounds(new Rectangle(135, 80, 120, 35));//el tamao de la etiqueta lbl_hola.setToolTipText("texto emerguente");//texto mouse por arriba lbl_hola.setFont(new Font("Dialog", 1, 20));//la fuente de la etiqueta lbl_hola.setForeground(Color.red);//color de la etiqueta this.btn_cerrar.addActionListener(this);//para escuchar los eventos. this.getContentPane().add(lbl_hola, null);//pegar los components en el frame this.getContentPane().add(btn_cerrar, null); } El setLayout es la forma en la que organizamos los componentes dentro del frame, esto nos servir para cuando el frame cambie de tamao o se maximice los componentes mantengan un aspecto armnico. Es todo un tema los distintos tipos de layout que existen en java. El size o tamao del componente es importante a la hora de centrar el frame en la pantalla, ya que lo utilizaremos para calcular la ubicacin en la que debe estar. Se pasa como parmetro un objeto dimensin con los valores del (ancho, alto). El titulo (setTitle) es el texto que aparecer en la parte superior del frame, ademas cuando lo minimicemos aparecer en la barra de herramientas de Windows (o superior) En el caso del btn_cerrar le diremos cual ser el texto con contendr con setText, el tamao y la ubicacin con el mtodo setBounds que recibe como parmetro un objeto Rectangle con parmetros que indican las coordenadas y tamao. Los dos primeros son las coordenadas en x e y desde el margen superior izquierdo del frame, y los dos restantes son el tamao en ancho y alto. En cuanto a la etiqueta lbl_hola podemos definir que dir con setText, la ubicacin y tamao con setBounds, y lo que dira cuando pasemos con el Mouse por arriba con setToolTipText, esta misma propiedad puede ser aplicada a otro componentes swing para ir guiando al usuario. Adems de ello podemos indicarle cual sera la fuente que la etiqueta tendr con setFont que recibe como parmetro un objeto del tipo Font que indica (el nombre de la fuente, normal/negrita/itlica, tamao). Finalmente podemos indicarle el color que tendr el texto con setForeground que recibir como parmetro una constante que indique el color o un objeto Color con parmetros (R,G,B). componente.addActionListener(this) es el mtodo que permite agregar un oyente de eventos a un componente que tendremos dentro del frame. En este caso se lo agregaremos al botn de cerrar por que nos interesa saber cuando el usuario hace un clic en el. Decimos que el parmetro ser el frame que creamos por que ya hemos implementado la interfaz ActionListener en el frame si no tendramos que crearla como lo hicimos en el caso de la ventana. Bien ya hemos creado todos los componentes que el frame tendra, ahora tenemos que pegarlos en frame, si no, no sern visibles, esto los haremos con el mtodo

add(componete), que tiene como parmetros ya sea el componente solo, o el componente con su correspondiente layout. Nota: a estas alturas, los que recin comienzan dirn es un kilombo total crear interfaces graficas en Java, pero no se asusten, los entornos de desarrollo tienen sus propias herramientas para crear esto arrastrando y soltando. Es ms! este ejemplo fue creado de esa forma. La finalidad es que sepamos que hace cada cosa.

1.2 El mtodo Centrar()


Al igual que el mtodo anterior, ste es un mtodo creado por m para centrar las ventanas. Como idea se puede crear una clase con el mtodo implementado y despus heredarla en otras clases, en fin son solo idas. private void centrar(){ Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frame =this.getSize(); setLocation((pantalla.width/2-(frame.width/2)),pantalla.height/2-(frame.height/2)); } Lo primero que realiza el mtodo es tomar la resolucin de la pantalla, primero obtiene el toolkit por defecto y despus el resolucin de la pantalla. Despus el tamao que le dimo al frame con getSize() Y finalmente le indicamos la localizacin del frame en la pantalla con el mtodo setLocation(int x, int y)

1.3 El mtodo confirmarSalida()


A este mtodo lo podremos llamar tanto desde el botn cerrar de la ventana misma como de un botn creado por nosotros mismos. La llamada al mtodo se realizar en los mtodos que las interfaces que escuchan los eventos de usuario, en el caso de la ventana es windowClosing(WindowEvent e), y en el caso del botn es actionPerformed(ActionEvent e). private void confirmarSalida(){ int i =JOptionPane.showConfirmDialog(this,"Realmente Desea Salir de Hola Swing?","Confirmar Salida",JOptionPane.YES_NO_OPTION); if(i==0){ System.exit(0); } } Bien ac hay algo interesante relacionado a las ventanas. JOptionPane es una clase que nos permite hacer cuadros de dilogos. En el caso del mtodo showConfirmDialog nos devolver un entero con el valor de la eleccin del usuario. (En este caso 0 para si, 1 para

no). Veremos ms opciones cuando trate dilogos en Java. El mtodo exit(int status) de la clase System nos permitir cerrar nuestra aplicacin. Debemos distinguirlos del mtodo JFrame.setVisible(boolean visibilidad) del frame que nos permite cerrar la ventana sin salir de la aplicacin.

1.1 El mtodo actionPerformed(ActionEvent evento)


Este mtodo nos permitir captar los eventos realizados por el usuario sobre algn componente swing, en nuestro caso ser el botn. public void actionPerformed(ActionEvent e){ if(e.getSource()==this.btn_cerrar){ confirmarSalida(); } } Lo primero que realizamos dentro del mtodo es preguntar cual es la fuente del evento, esto lo hacemos en caso de que tengamos varios botones a los cuales le asignamos el oyente de eventos. Si la fuente del evento es el botn cerrar, llamamos el mtodo confirmar salida.

1.2 La clase Principal


Es una buena costumbre tener una clase que contenga el mtodo main y desde la cual llamar al formulario de entrada a la aplicacin. public class Principal { public Principal() { FrameInicial f =new FrameInicial(); } public static void main(String[] args) { Principal principal = new Principal(); } } Publicadas por aro a la/s 5:50 PM Etiquetas: Java 7 comentarios:

.`.[nTn 'MR].`. dijo...

Caballero: excelente artculo, y muy atractivo a la vista su blog, necesito tomarme el tiempo para adentrar en el, me ha hechizado de alguna manera, camarada. Estoy batallando para hacer una especie de Jeopardy! en java, y como nunca he programado mas que en C# y C++, si estoy sufriendo en esta incursin a tan genial lenguaje. Espero poder escribir pronto en su blog de nuevo. Suerte, y siga as. Besos! P.D. Por cierto, dese una vuelta x mi blog, le dejo el link http://tulinux.blogspot.com 10:24 PM aro dijo... gracias viejo. Un abrazo y me doy una vuelta seguro 6:36 PM diego dijo... hola, antom, la verdad muy bueno tu programacion, solo te quiero hacer una pregunta , yo eh probado tu programa pero tengo un problema con esta parte addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { confirmarSalida(); } }); me subraya WindowAdapter()re rojo . lo que pense es que no habias echo ese metodo por que me sale una ventanita chiquita no mas. 3:40 PM sheba-jose dijo... oyes como le ago para que me aparesca una ventana que me inhabiliet la otra. Por ejemplo cuando habre una venta de abrir en cualquier programa la que esta atras se inhabilita o sea que no puedes hacer nada ahi hasta que no aceptes o canceles esa ventana. Espero que me entiendas espero tu respuesta. Es sobre java 12:30 AM aro dijo...

lo que mencionas sheba es una ventana modal y esta explicada en alguno de los post. Saludos. 8:08 PM Annimo dijo... camarada con respecto a lo siguiente no me funciona cuando le da cerrar con la boton cerrar de la ventana, el boton de la propia ventana que se encuentra en la parte superior derecha. xD addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { confirmarSalida(); } }); si me muestra el mensaje pero aunque le diga que no se cierre, de todos modos lo hace; xD espero tu respuesta si fueras tan amable xD 12:56 AM aro dijo... Ups! la verdad es que cuando este codigo fue escrito (hace mucho tiempo), se probo y todo, dejame revisar un poco el codigo cuando tenga un tiempito... y si le encuentro al solucion, la posteo! abrazo 4:49 PM Publicar un comentario Entrada ms reciente Entrada antigua Pgina Principal Suscribirse a: Comentarios de la entrada (Atom)

Mi Hora Quien soy

aro Me gusta decir que soy un pibe de barrio al que le gusta la informtica, ir al cine cada vez que puede, jugar al ajedrez en familia y viajar, ya sea en avin o solo con letras! Ver mi perfil completo

Fotos Recientes
www.flickr.com

More of lariojaclub's photos

y y

Ver Todas en Slideshow Ver Todas en Tira de Imagenes

Placa de Facebook
Perfil de Ariel Diaz Molina

Crea tu insignia

Mensajitos (Pizarra No Chat) Mensajeandonos...

Etiquetas
y y y y y y y y

Curiosidades (10) Diseo (6) Escritos (20) Java (11) Media (1) Otros (1) Politica y Actualidad (7) Vivencias (26)

Archivo
y y y y

2011 (1) 2010 (4) 2009 (8) 2008 (7)

2007 (23) diciembre (1) noviembre (2) septiembre (2) agosto (4)  Ventanas en Java I: JFrame, propiedades, centrar, ...  Iniciando Java  I say a little prayer for you  Gracias o julio (5) abril (3) o o marzo (2) febrero (3) o o enero (1)
o o o o

y y

2006 (10) 2005 (27)

Contador Feedjit
Plantilla Awesome Inc.. Tecnologa de Blogger.

Das könnte Ihnen auch gefallen