Está en la página 1de 10

Share

More

Next Blog

Create Blog

Sign In

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

MI HORA

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

QUIEN SOY

aro

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.

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
w w w .flickr .com

1. JFrame
Para comenzar a crear un JFrame tenemos que crear una ventana que extienda la clase
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

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(); } }
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

More of lariojaclub's photos

Ver Todas en Slideshow Ver Todas en Tira de Imagenes


PLACA DE FACEBOOK
Perfil de Ariel Diaz Molina

pdfcrowd.com

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).

C rea tu insignia

ETIQUETAS

Curiosidades (10) Diseo (8) Escritos (19) Java (12) Media (1) Otros (1) Politica y Actualidad (7) Vivencias (26)
ARCHIVO

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
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

2012 (1) 2011 (2) 2010 (4) 2009 (8) 2008 (7) 2007 (22) diciembre (1) noviembre (2)

pdfcrowd.com

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); }

noviembre (2) septiembre (2) agosto (4) Ventanas en Java I: JFrame, propiedades, centrar, ... Iniciando Java I say a little prayer for you Gracias julio (5) abril (3) marzo (2) febrero (2) enero (1) 2006 (10) 2005 (27)
SUSCRIBIRSE A

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
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

Entradas Comentarios

FOLLOW BY EMAIL Email address... Submit

CONTADOR

pdfcrowd.com

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.

FEEDJIT Live Traffic Feed

A visitor from New ark, New Jersey view ed "Pensamientos, solo eso: Ventanas en Java I: JFrame, propiedades, centrar, confirmar al cerrar, eventos" 0 secs ago A visitor from Mexico view ed "Pensamientos, solo eso: Ventanas en Java I: JFrame, propiedades, centrar, confirmar al cerrar, eventos" 3 mins ago A visitor from Lim a left "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" via 1.bp.blogspot.com 8 mins ago A visitor from Zapopan, Jalisco view ed "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" 9 mins ago A visitor from Mosquera, Cundinam arca view ed "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" 17 mins ago A visitor from Lim a left "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" via 1.bp.blogspot.com 24 mins ago A visitor from Buenos Aires, Distrito Federal

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
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

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)

Distrito Federal left "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" via 1.bp.blogspot.com 26 mins ago A visitor from Buenos Aires, Distrito Federal view ed "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" 26 mins ago A visitor from Buenos Aires, Distrito Federal left "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" via 1.bp.blogspot.com 26 mins ago A visitor from Buenos Aires, Distrito Federal view ed "Pensamientos, solo eso: UML Relaciones, Composicion, Agregacion, Asociacion, Dependencia, Generalizacion, Realizacion" 26 mins ago Real- time v iew Menu

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.

DON'T GET HACKED! Protect your WordPress.org site now with Wordfence

WordPress Security

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.
open in browser PRO version
Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

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 p.m. Etiquetas: Java

8 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

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

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 p.m.

aro dijo... gracias viejo. Un abrazo y me doy una vuelta seguro 6:36 p.m.

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 p.m.

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 open in browser PRO version Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

canceles esa ventana. Espero que me entiendas espero tu respuesta. Es sobre java 12:30 a.m.

aro dijo... lo que mencionas sheba es una ventana modal y esta explicada en alguno de los post. Saludos. 8:08 p.m.

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 a.m.

aro dijo... Ups! la verdad es que cuando este codigo fue escrito (hace mucho tiempo), se open in browser PRO version Are you a developer? Try out the HTML to PDF API

pdfcrowd.com

probo y todo, dejame revisar un poco el codigo cuando tenga un tiempito... y si le encuentro al solucion, la posteo! abrazo 4:49 p.m.

manfarre dijo... marco.setDefaultCloseOperation(DISPOSE_ON_CLOSE); marco.addWindowListener(new WindowAdapter(){ public void cerrarmarco(WindowEvent e){System.exit(0);} }); nota marco es mi JFrame saludos ojala les sirva 10:22 p.m. Publicar un comentario

Entrada ms reciente

Pgina Principal

Entrada antigua

Suscribirse a: Comentarios de la entrada (Atom)

Plantilla Picture Window. Tecnologa de Blogger.

open in browser PRO version

Are you a developer? Try out the HTML to PDF API

pdfcrowd.com