Sunteți pe pagina 1din 17

Mens

Un men en una aplicacin no es ms que un MenuBar en el que hay varios mens. Pensemos en un programa cualquiera con las voces de men File Edit y Help. Estas tres voces en Java son unos objetos de la clase Men y se tienen que aadir a un objeto de la clase MenuBar que se une a la ventana. Cada men tiene varias voces. por ejemplo, el men File tendr las voces: Abrir, Cerrar, Guarda y Salir. stos en Java son unos objetos de la clase MenuItem (o tambin Men si incluyen otros submens).

Por lo tanto, si a una aplicacin le quisieramos aadir un men tendramos hacer las siguientes cosas siguiendo un rden cualquiera: Crear los objetos MenuItem Crear los objetos men y pegarles los MenuItem Crear una MenuBar y pegarles los Mens Adems, como siempre, tenemos que escribir unos gestores para los sucesos de los mens y asociarlos a los mens. Veamos, en prctica, cmo se construye un menu, empezando por los MenuItem. Los sucesos de los MenuItem son los que tenemos que gestionar nosotros a diferencia de los sucesos de los mens que los gestiona el sistema. Mientras los segundos sirven para que aparezcan y desaparezcan las voces del men, los primeros son los clics sobre la orden correspondiente al Item. Por lo tanto, para stos tendremos que escribir unos ActionListener, como para los botones. Realmente no son otra cosa que unos botones especiales. Los constructores son tres: MenuItem() , que construye un MenuItem sin etiqueta. MenuItem(String label), que construye MenuItem con etiqueta label. MenuItem(String label, MenuShortcut s), que construye un MenuItem con etiqueta label y acelerador (tecla de opcin rpida) definido en MenuShortcut s. Algunos mtodos son: addActionListener(ActionListener l), asocia un ActionListener al MenuItem

para escuchar los sucesos de tipo ActionEvent (el clic). void deleteShortcut(), borra la tecla de opcin rpida para el menuitem. String getActionCommand(), da la accin asociada al MenuItem. La accin es la que pasa al actionListener del botn para identificar el botn mismo. As varios item pueden tener el mismo gestor de sucesos que podr distinguir el botn clicado basndose en la rden que le llega. String getLabel(), devuelve la etiqueta del MenuItem EventListener[]getListeners(Class listenerType) , devuelve todos los oyentes de sucesos asociados al MenuItem, del tipo listenerType. MenuShortcut getShortcut(), devuelve la definicin del acelerador para el MenuItem. boolean isEnabled(), dice si el men esta disponible o no. Si no lo est se visualizar en gris. void removeActionListener(ActionListener l), elimina el oyente asociado. void setActionCommand(String command), ajusta la orden asociada al MenuItem. Si no est especificado, la rden es la etiqueta del MenuItem. void setEnabled(boolean b), habilita y deshabilita el MenuItem. void setLabel(String label), ajusta la etiqueta para el MenuItem. void setShortcut(MenuShortcut s), define el acelerador para el men. Por lo tanto, para crear los Item del men File descrito antes tendremos que escribir: MenuItem abrir=new MenuItem("Abrir"); MenuItem cerrar=new MenuItem("Cerrar"); MenuItem guardar=new MenuItem("Guardar"); MenuItem salir=new MenuItem("Salir"); Por tanto creamos el objeto Menu para pegar los MenuItem. Dos constructores del objeto son: Menu(), construye un Men sin etiqueta Menu(String label), construye un men con etiqueta label. Entre los mtodos hay: MenuItem add(MenuItem mi), aade un MenuItem al Men. void add(String label), aade una etiqueta al Men (tipo separador). void addSeparator(), aade un verdadero separador al men, es decir, una lnea. Aadiendo objetos a un men de esta forma, se colocarn en el mismo rden en el que se aaden. Para especificar, en cambio, la posicin en que si quieren introducir hay que usar los mtodos: void insert(MenuItem menuitem, int index) void insert(String label, int index) void insertSeparator(int index) Los mtodos MenuItem getItem(int index) e int getItemCount() sirven para coger un item establecido en una posicin y para conocer el nmero de MenuItem incluidos en un men. Para eliminar los Item del men, en cambio, se utilizan los mtodos: void remove(int index)

void remove(MenuComponent item) e void removeAll() Por lo tanto, para crear nuestro men File tendremos que escribir: Menu file= new Menu("File"); file.add(abrir); file.add(guardar); file.add(cerrar); file.addSeparator(); file.add(salir); Llegados e este punto, suponiendo haber creado tambin Edit y Help, tenemos que aadirle el MenuBar que se crea utilizando el constructor MenuBar(). En esta barra estan los mtodos remove y removeAll como para los mens, y est la add: Menu add(Menu m); Por lo tanto nuestro MenuBar se tendr que crear de la siguiente forma: MenuBar barra=new MenuBar(); barra.add(file); barra.add(edit); barra. setHelpMenu(help); Este ltimo mtodo es especial para aadir un men de ayuda. Finalmente, no nos queda que asociar la barra de men a nuestra ventana. Esto es muy simple porque nuestra ventana ser una extensin de Frame y en frame est el mtodo: setMenuBar(MenuBar mb); En nuestro caso ser setMenuBar (barra); CUIDADO: con awt no es posible introducir men en Dialog y en Applet (los que se ven son falsos mens, es decir, se programan dibujando unos mens o no son slo awt), mientras con swing s. A continuacin mostramos el listado de una aplicacin que define un men y escucha los sucesos: import java.awt.*; import java.awt.event.*; public class Ventanamen extends Frame { MenuItem abrir=new MenuItem("Abrir"); MenuItem cerrar=new MenuItem("Cerrar"); MenuItem salvar=new MenuItem("Guardar"); MenuItem salir=new MenuItem("Salir"); MenuItem cortar=new MenuItem("Cortar"); MenuItem copiar=new MenuItem("Copiar"); MenuItem pegar=new MenuItem("Pegar"); MenuItem eliminar=new MenuItem("Eliminar");

MenuItem buscar=new MenuItem("Buscar"); MenuItem sustituir=new MenuItem("Sustituir"); MenuItem ayuda=new MenuItem("ndice");

Menu file= new Menu("File"); Menu edit= new Menu("Edit"); Menu help= new Menu("Help"); MenuBar barra = new MenuBar(); Label resultado=new Label("Ninguna voz de men clicada"); public Ventanamen() { setupSucesos(); file.add(abrir); file.add(guardar); file.add(cerrar); file.addSeparator(); file.add("Men Salir"); file.addSeparator(); file.add(salir); edit.add(cortar); edit.add(copiar); edit.add(pegar); edit.add(eliminar); edit.addSeparator(); edit.add(buscar); edit.add(sustituir); help.add(ayuda); barra.add(file); barra.add(edit); barra.setHelpMenu(help); setMenuBar(barra); add(resultado); pack(); show(); addWindowListener(new VentanamenWindowListener()); } void setupSucesos() { abrir.addActionListener(new OyenteMen()); salvar.addActionListener(new OyenteMen()); cerrar.addActionListener(new OyenteMen()); salir.addActionListener(new OyenteMen());

cortar.addActionListener(new OyenteMen()); copiar.addActionListener(new OyenteMen()); pegar.addActionListener(new OyenteMen()); eliminar.addActionListener(new OyenteMen()); buscar.addActionListener(new OyenteMen()); sustituir.addActionListener(new OyenteMen()); ayuda.addActionListener(new OyenteMen());

public static void main(String[] arg) { new Ventanamen(); } class OyenteMen implements ActionListener { public void actionPerformed (ActionEvent e) { resultado.setText(" Clicado "+e.getActionCommand()); if (e.getActionCommand().compareTo("Salir")==0) System.exit(0); } } class VentanamenWindowListener implements WindowListener { public void windowActivated(WindowEvent e) { System.out.println("Escuchado un Window Activated"); } public void windowClosed(WindowEvent e) { System.out.println("Escuchado un Window Closed"); } public void windowClosing(WindowEvent e) { System.out.println("Escuchado un Window Closing"); System.exit(0); } public void windowDeactivated(WindowEvent e) { System.out.println("Escuchado un Window Deactivaded");

} public void windowDeiconified(WindowEvent e) { System.out.println("Escuchado un Window Deiconified"); } public void windowIconified(WindowEvent e) { System.out.println("Escuchado un Window Iconified"); } public void windowOpened(WindowEvent e) { System.out.println("Escuchado un Window Opened"); } } } Como acabamos de ver en el ejemplo, hay otro oyente de sucesos. Escucha los sucesos de tipo WindowEvent y sirve para escuchar sucesos de la ventana. Para asociarlo a la ventana se utiliza el mtodo addWindowListener(WindowListener l); en el que WindowListener es el oyente de los sucesos. Para definir un oyente de sucesos hay, por lo tanto, que implementar la interfaz WindowListener y volver a definir todos los mtodos: class MOYENTE implements WindowListener Los mtodos para definir son: public void windowActivated(WindowEvent e) public void windowClosed(WindowEvent e) public void windowClosing(WindowEvent e) public void windowDeactivated(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowIconified(WindowEvent e) public void windowOpened(WindowEvent e) Hay que volver a definirlos todos. Si ponemos en marcha el ejemplo vemos, gracias a las System.out.println colocadas en los mtodos redefinidos, a qu tipo de suceso de la ventana estn asociados los distintos mtodos, como, por ejemplo, windowClosed se invoca cuando se pulsa la X de la ventana. Como ejercicio intentad escribir unos WindowListener para escuchar el suceso cerrar Ventana para todos los Frame definidos en los ejemplos de este captulo (los dej a posta sin definicin). Los mens analizados no son los nicos que se pueden implementar en Java. Otro tipo de men es el de tipo Popup, es decir, el men que se asocia a un componente o a una posicin. Un ejemplo de men popup es el que sale en el desktop del sistema operativo Windows cuando se aprieta el

botn derecho del ratn (vase Dibujo).

Para crear un men popup hay que crear un objeto que pertenezca a la clase PopupMenu, utilizando uno de los constructores: PopupMenu(), PopupMenu(String label), que crean, respectivamente, un men sin o con etiqueta. PopupMenu es una extensin de Men, por lo tanto hereda los mtodos incluso los que sirven para aadir y eliminar unos MenuItem. En cambio, entre sus mtodos hay uno para visualizar el men en una posicin establecida de la pantalla con respecto a un determinado componente: show(Component origin, int x, int y)

http://www.htmlpoint.com/guidajava/java_23.htm

JOptionPane y dilogos modales


De ChuWiki

Contenido
1 Introduccin JOptionPane y Dilogos modales

2 JOptionPane o 2.1 JOptionPane.showOptionDialog() o 2.2 JOptionPane.showInputDialog() o 2.3 JOptionPane.showMessageDialog() o 2.4 JOptionPane.showConfirmDialog() o 2.5 JOptionPane con timeout 3 JDialog modal

Introduccin JOptionPane y Dilogos modales


En nuestras aplicaciones Java Swing es bastante habitual que tengamos que pedir al usuario la confirmacin de una accin (por ejemplo, salir de la aplicacin o borrar unos datos), pedirle algn dato sencillo, darle a elegir entre varias acciones o simplemente mostrarle un aviso. A veces es necesario para estas acciones abrir una ventana secundaria donde el usuario debe realizar la accin que sea y cerrarla. Por ejemplo, podemos mostrarle una ventana preguntando algo como "Ests seguro que quieres borrar todos esos datos?" y que tenga un par de botones de "S, estoy seguro" y "No, no creo". Afortunadamente, en java no tenemos que hacer esas ventanas. Para las acciones ms habituales, ya tenemos la clase JOptionPane que muestra esas ventanas por nosotros y nos devuelven la eleccin hecha por el usuario. En otras ocasiones, nos tendremos que hacer una ventana a nuestra medida, pero si usamos un JDialog modal, al menos tendremos la ventaja de que el cdigo esperar a que el usuario introduzca los datos en dicha ventana. Vamos a ver en este artculo ejemplos con JOptionPane y Dilogos modales. En el siguiente enlace puedes ver todo el cdigo detallado de estos ejemplos con JOptionPane y Dilogos modales.

JOptionPane
JOptionPane tiene dos juegos repetidos de ventanas de aviso/confirmacin. Una para ventanas normales y otra para JInternalFrame. Puesto que son lo mismo, vamos a ver aqu slo los de ventanas normales. Las distintas posibilidades que tenemos de JOptionPane son:

JOptionPane.showOptionDialog()
Tenemos un mtodo JOptionPane.showOptionDialog() que nos muestra la ventana ms configurable de todas, en ella debemos definir todos los botones que lleva. De hecho, las dems ventanas disponibles con JOptionPane se construyen a partir de esta. Por ello, al mtodo debemos pasarle muchos parmetros:

parentComponent: A partir de este componente, se intentar determinar cual es la ventana que debe hacer de padre del JOptionPane. Se puede pasar null, pero conviene pasar, por ejemplo, el botn desde el cual se lanza la accin que provoca que se visualice el JOptionPane. De esta manera, la ventana de aviso se visualizar sobre el botn y no se podr ir detrs del mismo si hacemos click en otro sitio. message: El mensaje a mostrar, habitualmente un String, aunque vale cualquier Object cuyo mtodo toString() devuelva algo con sentido. title: El ttulo para la ventana. optionType: Un entero indicando qu opciones queremos que tenga la ventana. Los posibles valores son las constantes definidas en JOptionPane: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, o OK_CANCEL_OPTION. messageType: Un entero para indicar qu tipo de mensaje estamos mostrando. Este tipo servir para que se determine qu icono mostrar. Los posibles valores son constantes definidas en JOptionPane: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, o PLAIN_MESSAGE icon: Un icono para mostrar. Si ponemos null, saldr el icono adecuado segn el parmetro messageType. options: Un array de objects que determinan las posibles opciones. Si los objetos son componentes visuales, aparecern tal cual como opciones. Si son String, el JOptionPane pondr tantos botones como String. Si son cualquier otra cosa, se les tratar como String llamando al mtodo toString(). Si se pasa null, saldrn los botones por defecto que se hayan indicado en optionType. initialValue: Seleccin por defecto. Debe ser uno de los Object que hayamos pasado en el parmetro options. Se puede pasar null.

La llamada a JOptionPane.showOptionDialog() devuelve un entero que representa la opcin que ha seleccionado el usuario. La primera de las opciones del array es la posicin cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el mtodo devolver -1. Aqu un ejemplo de cmo llamar a este mtodo
int seleccion = JOptionPane.showOptionDialog( unComponentePadre, "Seleccione opcion", "Selector de opciones", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, unIcono, // null para icono por defecto.

new Object[] { "opcion 1", "opcion 2", "opcion 3" }, YES, NO y CANCEL "opcion 1");

// null para

if (seleccion != -1) System.out.println("seleccionada opcion " + (seleccion + 1));

y la ventana que se obtiene con el cdigo anterior

JOptionPane.showInputDialog()
Tenemos varios mtodos JOptionPane.showInputDialog() y la diferencia entre ellos es que tienen ms o menos parmetros, segn queramos aceptar o no las opciones por defecto. Los parmetros y sus significados son muy similares a los del mtodo showOptionDialog(), pero hay una diferencia. Si usamos los mtodos que no tienen array de opciones, la ventana mostrar una caja de texto para que el usuario escriba la opcin que desee (un texto libre). Si usamos un mtodo que tenga un array de opciones, entonces aparecer en la ventana un JComboBox en vez de una caja de texto, donde estarn las opciones que hemos pasado. Aqu un par de trozos de cdigo, el primero para conseguir una caja de texto,
// Con caja de texto String seleccion = JOptionPane.showInputDialog( unComponentePadre, "Input dialog", JOptionPane.QUESTION_MESSAGE); // el icono sera un iterrogante System.out.println("El usuario ha escrito "+seleccion);

y la imagen que obtenemos con este cdigo

En este segundo ejemplo, damos todas las opciones que queremos, obteniendo un JComboBox
// Con JCombobox Object seleccion = JOptionPane.showInputDialog( unComponentePadre, "Seleccione opcion", "Selector de opciones", JOptionPane.QUESTION_MESSAGE, unIcono, // null para icono defecto new Object[] { "opcion 1", "opcion 2", "opcion 3" }, "opcion 1"); System.out.println("El usuario ha elegido "+seleccion);

y esta es la imagen que se obtiene.

JOptionPane.showMessageDialog()
Esta es la ms sencilla de todas, slo muestra una ventana de aviso al usuario. La ejecucin se detiene hasta que el usuario cierra la ventana. Hay varios mtodos con el mismo nombre y ms o menos parmetros, en funcin de si aceptamos las opciones por defecto (icono, por ejemplo) o queremos cambiar alguna cosa. Un trozo de cdigo para llamarlo
JOptionPane.showMessageDialog( componentePadre, "Un aviso puetero"); System.out.println("ya estas avisado");

y la imagen que muestra este cdigo

JOptionPane.showConfirmDialog()

Este mtodo muestra una ventana pidiendo una confirmacin al usuario, estilo "Seguro que lo quieres borrar todo?" y da al usuario opcin de aceptar o cancelar ese borrado masivo que est a punto de hacer. El mtodo devuelve un entero indicando la respuesta del usuario. Los valores de ese entero puede ser alguna de las constantes definidas en JOptionPane: YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION. Por supuesto, hay metodos iguales con ms o menos parmetros para configurar las cosas ms o menos. El siguiente ejemplo de codigo
int confirmado = JOptionPane.showConfirmDialog( componentePadre, "Lo confirmas?"); if (JOptionPane.OK_OPTION == confirmado) System.out.println("confirmado"); else System.out.println("vale... no borro nada...");

muestra la siguiente imagen

JOptionPane con timeout


La llamada a cualquiera de los mtodos anteriores para la ejecucin de nuestro programa hasta que el usuario cierre la ventana seleccionando alguna de las opciones. A veces no nos interesa quedarnos bloqueados indefinidamente esperando la respuesta del usuario, por ejemplo, podemos mostrarle un mensaje para informarle de algo con un showMessageDialog() y si en 30 segundos no lo ha cerrado, cerrarlo nosotros automticamente desde nuestro cdigo y continuar con lo que estbamos haciendo. Desgraciadamente, JOptionPane no tiene ninguna opcin con timeout, por lo que hacer esto no es inmediato. Debemos lanzar un Timer o un hilo para cerrar la ventana desde ese hilo. Y desgraciadamente, los mtodos que hemos visto de JOptionPane no nos devuelven una referencia a la ventana que acabamos de visualizar, por lo que tampoco podremos ocultarla desde cdigo. La solucin es que creemos nosotros la ventana y nos guardemos una referencia a ella. Afortunadamente, no debemos hacernos la ventana desde cero. Podemos hacer un new de JOptionPane para obtener el panel de dicha ventana y llamar al mtodo createDialog() para obtener y visualizar el JDialog correspondiente. El cdgo completo para esto puede ser como el del ejemplo

package com.chuidiang.ejemplos; import java.awt.Component; import javax.swing.JDialog; import javax.swing.JOptionPane; /** * Muestra un JOptionPane con un timeout para que se cierre automaticamente. * * @author chuidiang * */ public class JOptionPaneConTimeOut { private static JOptionPane option = new JOptionPane("", JOptionPane.INFORMATION_MESSAGE); private static JDialog dialogo = null; /** * Solo hace caso a padre la primera vez que se llama a este mtodo. La * llamada a este metodo se queda bloqueada hasta que el usuario cierra el * JOptionPane o pasa el timeout. * * @param padre * @param texto * @param titulo * @param timeout * En mili segundos */ public static void visualizaDialogo( Component padre, String texto, String titulo, final long timeout) { option.setMessage(texto); if ( null == dialogo ) { dialogo = option.createDialog(padre, titulo); } else { dialogo.setTitle(titulo); } Thread hilo = new Thread() { public void run() { try { Thread.sleep(timeout); if ( dialogo.isVisible() ) { dialogo.setVisible(false);

} } catch ( InterruptedException e ) { e.printStackTrace(); } } }; hilo.start(); dialogo.setVisible(true); } }

La clase del ejemplo tiene un mtodo esttico visualizaDialogo() al que podemos llamar para mostrar un aviso que se cierre automticamente si el usuario no lo cierra antes. Esta clase/mtodo es slo de ejemplo y no permite configurar todo lo que se puede configurar en el JOptionPane, no queremos complicar la clase en exceso para esta explicacin. Vamos viendo algunos detalles. Creamos el JOptionPane de esta forma
private static JOptionPane option = new JOptionPane("",JOptionPane.INFORMATION_MESSAGE);

es decir, sin texto concreto "", y slo para un mensaje de tipo informacin. Podramos aqu usar cualquiera de los constructores que tiene JOptionPane y poner los parmetros que queramos. En sucesivas llamadas se pueden cambiar estos parmetros usando los mtodos set al efecto
option.setMessage(texto);

Creamos el dilogo slo la primera vez que se llama al mtodo con


dialogo = option.createDialog(padre, titulo);

El ttulo es el de la ventana (del JDialog) y podemos cambiarlo cuando queramos con


dialogo.setTitle(titulo);

Lo que no podemos cambiar es el padre, por eso el comentario que aparece de que slo se har caso al parmetro parent en la primera llamada. Una vez configurada la ventana con el ttulo y tal, creamos un hilo con una espera del tiempo indicado y pasado ese tiempo cerramos la ventana. Se comprueba antes si sigue visible, no sea que la haya cerrado el usuario antes de pasar el tiempo indicado. Recordamos arrancar el hilo con hilo.start() y nos aseguramos de hacer esto antes de hacer el dilogo visible, ya que al ser el dilogo modal, la llamada a setVisible(true) quedar bloqueada hasta que se cierre la ventana. Y despus de arrancar el hilo, slo queda hacer visible el dilogo

hilo.start(); dialogo.setVisible(true);

Si el dilogo tuviera opciones que nos interesan, despues de dialogo.setVisible(), podemos obtener la opcion seleccionada con
Object valor = option.getValue();

Este valor ser un JOption.UNINITIALIZED_VALUE si el dialogo se ha cerrado por timeout, o bien el valor seleccionado JOptionPane.YES_OPTION, JOptionPane.CANCEL_OPTION, etc, o bien alguno de los Object[] que hayamos usado uno de los constructores que admite Object[] options como parmetro.

JDialog modal
A veces las ventanas de JOptionPane no son suficientes para lo que necesitamos. Por ejemplo, podemos querer pedir un dato ms complejo que una simple seleccin de una opcin. Y a veces mientras el usuario introduce ese dato complejo en la ventana y pulsa "Aceptar", queremos que nuestro cdigo se pare en espera de la respuesta. Para estas situaciones tenemos los JDialog modales. En un JDialog podemos poner todos los componentes que queramos, haciendo la ventana todo lo compleja que queramos. Si ese JDialog es adems modal, en el momento de hacerla visible llamando a setVisible(true), el cdigo se quedar parado en esa llamada hasta que la ventana se cierre. Podemos, por tanto, justo despus del setVisible(true), pedirle a la ventana los datos que ha introducido el operador. Vamos a hacer aqu un ejemplo para ver todo esto. Como no quiero complicar demasiado el JDialog por claridad del ejemplo, el JDialog slo tendr un JTextField dentro de l y al pulsar <intro> en ese JTextField, despus de haber escrito algo, el JDialog se cerrar. El cdigo para conseguir esto es el siguiente:
package com.chuidiang.ejemplos.option_pane_dialog_modal; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JDialog; import javax.swing.JTextField; /** * Dialogo modal que sirve de ventana de captura de datos.<br> * Contiene un JTextField en el que escribimos un texto y pulsando enter despus * de escribir en el, la ventana se cierra. * * @author Chuidiang * */ public class DialogoModal extends JDialog {

private JTextField textField; /** * Constructor que pone titulo al dialogo, construye la ventana y la hace * modal. * * @param padre * Frame que hace de padre de esta dialogo. */ public DialogoModal(Frame padre) { // padre y modal super(padre, true); setTitle("Mete un dato"); textField = new JTextField(20); getContentPane().add(textField); // Se oculta la ventana al pulsar <enter> sobre el textfield textField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { setVisible(false); } }); } /** * Deveulve el texto en el jtextfield * * @return el texto */ public String getText() { return textField.getText(); } }

Le hemos aadido adems un mtodo getText() que devuelve el texto del JTextField. Ser este al mtodo al que llamemos para conseguir el texto introducido por el usuario despus de que se cierre la ventana. Para hacer la llamada a este dilogo y recoger los resultados, usaremos el siguiente cdigo
DialogoModal dialogoModal = new DialogoModal((Frame) ventanaPadre); dialogoModal.pack(); // para darle tamao automtico a la ventana. dialogoModal.setVisible(true); // Al ser modal, la llamada a setVisible(true) se queda bloqueada hasta // que el dialogo modal se oculte. Por ello, a continuacin tenemos // la seguridad de que el texto ya esta disponible. System.out.println("El usuario ha escrito "+dialogoModal.getText());

Esta pgina fue modificada por ltima vez el 12:18, 5 sep 2011.

http://chuwiki.chuidiang.org/index.php?title=JOptionPane_y_di%C3%A1logos_modales

S-ar putea să vă placă și