SlideShare una empresa de Scribd logo
1 de 24
Elabora: Benjamín Joaquín Martínez
Investigación: Javax.swing
Awt de java
JOptionPane
https://www.linkedin.com/in/benjaminjoaquinmartinez/
Javax.swing
En el casode Swing,esJavaquienvisualizay gestionalainteraccióndel usuariosobre loselementos
de la interface gráfica.
Existen clases con el mismo cometido tanto en AWT como en Swing. Por ejemplo, en ambas
bibliotecastenemosunaclase paracrearventanasFrame en el casode AWT y JFrame enel casode
Swing.
Existenotrasclasesque son del paquete AWTperose utilizanenSwing,porejemplo,loseventosy
escuchadores. Como no tienen representación gráfica, en Swing se reaprovechan los de AWT.
Swing es una biblioteca de clases que permite crear interfaces gráficas de usuario en Java.
Swingformaparte delpaqueteestándar,nohace faltaimportarningúnficheroadicionalennuestros
proyectos.
Swingestáorientadoaobjetos,yusael patrónde diseñoObservador/Observable parainformarde
las interacciones del usuario sobre la interface gráfica de usuario.
Contenedores y componentes
Existen dos elementos básicos para la creación de interfaces gráficas de usuario usando Swing:
 Contenedores: Elementos capaces de albergar otros elementos.
 Componentes: Elementos que se añaden a contenedores. Usualmente los componentes
tienen aspecto gráfico, como un botón.
Swing proporciona tres tipos de contenedores de alto nivel. Esto significa que, cualquier otro
contenedor que no sea de alto nivel, o componente, debe ir en su interior.
Estos tres contenedores de alto nivel son: JFrame, JDialog y JApplet
 JFrame: Se visualiza como una ventana principal con marco y barra de título.
 JDialog:Se visualizacomounaventanaindependientede laventana principal paramostrar
información, como por ejemplo el contenido de un directorio.
JApplet:Permite crearaplicacionesconinterface gráficaque se ejecutanenel contextode
un navegador web.
El primer ejemplo de contenedor: un JFrame:
JFrameventana=newJFrame("PrimeraVentana");
ventana.setSize(400,400);
ventana.setVisible(true);
Quizás, veamos ejemplos donde se extiende a la clase JFrame para crear la ventana:
publicclassVentanaextendsJFrame{
privateVentana(){
super("PrimeraVentana");
}
privatevoidejecuta(){
setSize(400,400);
setVisible(true);
}
publicstaticvoidmain(String[]args){
newVentana().ejecuta();
}
}
La desventaja de esta opción es que esta clase no puede extender a ninguna otra.
Una vezque hemoscreadouncontenedor,loscomponenteslosañadiremossiguiendolassiguientes
reglas:
 Un componente se visualizará si lo hemos añadido a un contenedor.
 Un componente sólo se puede añadir una vez a un contenedor.
 Los componentes los debemos añadir al panel del contenedor.
Un primer componente, un botón.
JFrameventana=newJFrame("PrimeraVentana");
JButtonboton=newJButton("Unbotón");
ventana.getContentPane().add(boton);//Añadimosalpaneldelaventana.
ventana.setSize(400,400);
ventana.setVisible(true);
 El botón lo añadimos al panel de la ventana principal.
 El botón ocupa todo el tamaño de la ventana.
 El botón se comporta como tal, pero no hace nada.
Para añadir componentes, u otros contenedores, a la ventana principal,hay que hacerlo sobre su
panel, y no directamente sobre la ventana.
Como programadores, no hace falta que nos ocupemos de la organización de los componentes
dentro de los contenedores.
Swing nos ofrece gestores de aspecto capaces de organizar, de manera automática, la posición y
tamaño de los componentes dentro de los contenedores.
Los contenedores tienenasignado, por defecto, alguno de estos gestores de aspecto. En el caso
de JFrame este gestor es BorderLayout.
Este esel comportamientode estegestordeaspecto.Define5zonas,encadaunade las cualessólo
podemos añadir un componente.
Si no existe alguna de las zonas, la central se extiende hasta ocupar toda la ventana.
El código para generar las imágenes anteriores:
JFrameventana=newJFrame("BorderLayoutManager");
Containercontenedor=ventana.getContentPane();
contenedor.add(newJButton("BorderLayout.CENTER"),
BorderLayout.CENTER);
contenedor.add(newJButton("BorderLayout.NORTH"),BorderLayout.NORTH);
contenedor.add(newJButton("BorderLayout.SOUTH"),BorderLayout.SOUTH);
contenedor.add(newJButton("BorderLayout.EAST"),BorderLayout.EAST);
contenedor.add(newJButton("BorderLayout.WEST"),BorderLayout.WEST);
ventana.setSize(500,500);
ventana.setVisible(true);
Otro contenedor muy utilizado es JPanel.
Este contenedor no tiene ningúnaspecto visual,sirve como contenedor de otros componenetes y
contenedores.
Por defecto, JPanel tiene un FlowLayout como gestor de aspecto.
FlowLayout distribuye los componentes de izquierda a derecha y de arriba hacia abajo, a medida
que los añadimos.
El código del ejemplo anterior:
JFrameventana=newJFrame("FlowLayoutManager");
Containercontenedor=ventana.getContentPane();
JPanelpanel=newJPanel();//Estepanelcontieneloscomponentes.
panel.add(newJButton("Uno"));
panel.add(newJButton("Dos"));
panel.add(newJButton("Tres"));
panel.add(newJButton("Cuatro"));
panel.add(newJButton("Cinco"));
contenedor.add(panel);
ventana.setSize(200,200);
ventana.setVisible(true);
Cada contenedor tiene un gestor de aspecto por defecto. Pero lo podemos cambiar:
JFrameventana=newJFrame("FlowLayoutManager");
Containercontenedor=ventana.getContentPane();
//Cambiamoselgestordeaspecto.
contenedor.setLayout(newFlowLayout());
contenedor.add(newJButton("Uno"));
contenedor.add(newJButton("Dos"));
contenedor.add(newJButton("Tres"));
contenedor.add(newJButton("Cuatro"));
contenedor.add(newJButton("Cinco"));
ventana.setSize(200,200);
ventana.setVisible(true);
El aspecto final de la interface gráfica es el mismo que usando un JPanel.
Existenotros gestoresdeaspecto,porejemplo GridLayoutnospermitecolocarloscomponentesen
una rejilla:
El código del ejemplo anterior:
JFrameventana=newJFrame("GridLayoutManager");
ventana.setLayout(newGridLayout(2,3));
Containercontenedor=ventana.getContentPane();
contenedor.add(newJButton("Uno"));
contenedor.add(newJButton("Dos"));
contenedor.add(newJButton("Tres"));
contenedor.add(newJButton("Cuatro"));
contenedor.add(newJButton("Cinco"));
ventana.setSize(500,500);
ventana.setVisible(true);
En este caso, la rejilla es 2 filas por 3 columnas.
BoxLayout nos permite colocar los componentes vertical u horizontalmente:
Por defecto, los componentes se alinean a la izquierda.
El código del ejemplo anterior;
JFrameventana=newJFrame("BoxLayoutManager");
Containercontenedor=ventana.getContentPane();
contenedor.setLayout(newBoxLayout(contenedor,BoxLayout.PAGE_AXIS));
contenedor.add(newJButton("Uno"));
contenedor.add(newJButton("Dos"));
contenedor.add(newJButton("Tres"));
contenedor.add(newJButton("Cutro"));
contenedor.add(newJButton("Cinco"));
ventana.setSize(400,400);
ventana.setVisible(true);
La alineación es propia de cada componente. Para alinear en el centro:
El código del ejemplo anterior:
JButtonboton=newJButton("Uno");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
contenedor.add(boton);
boton=newJButton("Dos");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
contenedor.add(boton);
boton=newJButton("Tres");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
contenedor.add(boton);
boton=newJButton("Cuatro");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
contenedor.add(boton);
boton=newJButton("Cinco");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
contenedor.add(boton);
Swingeslosuficientementeinteligente comoparacalcularel tamañoóptimode laventana,apartir
de los componentes que contiene.
Para ello, basta sustituir:
ventana.setSize(400,400);
Por:
ventana.pack();
Swing calcula el tamaño óptimo para que se vean todos los componentes que hemos añadido.
La ventaja es que, si fijamos nosotros el tamaño, puede que al cambiar de SO el aspecto no sea el
que nosotrosqueremos,yaque,porejemplo,el anchodel tipode letranoesel mismoentodoslos
SOs.
La idea básica en el uso de contenedores, para crear la interface gráfica de una aplicación, es que
los contenedores se pueden anidar dentro de otros contenedores.
En ejemplo anterior, los botones horizontales se han añadido a un panel -JPanel dispone de
un FlowLayout como gestor de aspecto por defecto-, y el panel a la región norte de la ventana.
JPanelpanelNorte=newJPanel();
panelNorte.add(newJButton("Norte1"));
panelNorte.add(newJButton("Norte2"));
panelNorte.add(newJButton("Norte3"));
contenedor.add(panelNorte,BorderLayout.NORTH);
Los botones verticalesse han añadido a un panel al que se le ha modificado su gestor de aspecto,
para que seaBoxLayout. Además, la alineación de cada uno de los botones se ha fijado como
centrada.
Finalmente, el panel se ha añadido a la región central de la ventana.
JPanelpanelCentro=newJPanel();
panelCentro.setLayout(newBoxLayout(panelCentro,BoxLayout.PAGE_AXIS));
JButtonboton=newJButton("Centro1");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
panelCentro.add(boton);
boton=newJButton("Centro2");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
panelCentro.add(boton);
boton=newJButton("Centro3");
boton.setAlignmentX(Component.CENTER_ALIGNMENT);
panelCentro.add(boton);
contenedor.add(panelCentro);
La ideabásicaespoderagrupar contenedoresdentrode otroscontenedores,de este modo,conun
poco de experiencia, siempre conseguiremos que el aspecto de las aplicaciones sea el que
deseamos.
Awt de java
Abstract WindowToolkit. (AWT,enespañol Kitde Herramientasde Ventana Abstracta). Conjunto
de herramientas GUI (Interfaz Gráfica con el Usuario) diseñadas para trabajar con múltiples
plataformas.Interfazde usuario,ysistemade ventanasindependientede laplataformaoriginal de
Lenguaje de programaciónJava.AWTesparte de lasJava FoundationClasses(JFC) - laAPIestándar
para suministrar una interfaz gráfica de usuario (GUI) para un programa Java.
Los componentes de AWT dependen de componentes de código nativo, por lo que a los
componentes se les suele llamar “heavyweight components” (componentes pesados).
AWTestápensadoparaaplicacionesque corranennavegadoresantiguosydefinidoconlosmínimos
de cualquieraplicación,esporestoque noincluye componentescomplejoscomopuedensertablas,
vistas de árbol, barras de progreso y otros.
Como todas las clases de Java, los componentes awt utilizados en el AWT pertenecen a una
determinada jerarquía de clases, que es muy importante conocer. Todos los componentes
desciendende laclase Component,de laque pueden yaheredaralgunosmétodosinteresantes.El
package al que pertenecen estas clases se llama java.awt y estas clases son:
 Button Canvas Checkbox Choice
 FileDialog
 Dialog Frame
 Window Panel ScrollPane
 Container Label List Scrollbar
 TextArea TextField
 TextComponent
 Component
 Object
Características de los componentes
1. Todoslos Componentesawt (exceptoWindow ylosquederivande ella)debenserañadidos
a un Container. También un Container puede ser añadido a otro Container.
2. Para añadir un Componenta un Containerse utilizael métodoadd() de la clase Container:
containerName.add(componentName);
3. Los Containers de máximo nivel son las Windows (Frames y Dialogs). Los Panels y
ScrollPanes deben estar siempre dentro de otro Container.
4. Un ComponentsólopuedeestarenunContainer.Si estáenunContaineryse añade aotro,
deja de estar en el primero.
5. La clase Component tiene una serie de funcionalidades básicas comunes (variables y
métodos) que son heredadas por todas sus sub-clases.
Jerarquía de eventos
Todos los eventos de Java 1.1 y Java 1.2 son objetos de clasesque pertenecena una determinada
jerarquíade clases.Lasuper-claseEventObjectpertenece al packagejava.util.De EventObjectderiva
la clase AWTEvent, de la que dependen todos los eventosde AWT. Por conveniencia,estas clases
están agrupadas en el package java.awt.event.
Los eventos de Java pueden ser de alto y bajo nivel. Los eventos de alto nivel se llaman también
eventos semánticos, porque la acción de la que derivan tiene un significado en sí misma, en el
contextode lasinterfacesgráficasdeusuario.Loseventosde bajonivelsonlasaccioneselementales
que hacen posible los eventos de alto nivel. Son eventos de alto nivel los siguientes eventos: los
cuatro que tienenque vercon dar clicksobre botoneso elegircomandosenmenús(ActionEvent),
cambiar valores en barras de desplazamiento (AdjustmentEvent), elegir valores (ItemEvents) y
cambiar el texto (TextEvent).
Los eventos de bajo nivel son los que se producen con las operaciones elementales con el ratón,
teclado,containersywindows.Lasseisclasesde eventosde bajonivelsonloseventosrelacionados
con componentes (ComponentEvent), con los containers (ContainerEvent), con pulsar teclas
(KeyEvent),conmover,arrastrar, pulsary soltarcon el ratón (MouseEvent),conobtenero perder
el focus(FocusEvent) ycon las operacionesconventanas(WindowEvent).El modelode eventosse
complicacuando se quiere construirun tipode componente propio,noestándardel AWT. En este
caso hay que interceptarloseventosde bajonivelde Javayadecuarlosal problemaque se tratade
resolver.
JOptionPane
JOptionPane es una clase que nos provee una conjunto de ventanasde dialogoque es ideal, para
mostrar mensajes al usuario. Ya sean informativos, advertencias, errores, confirmaciones… O
incluso tenemos la posibilidad de solicitar la introducción de un dato.
Esta clase la encontramos dentro del paquete javax.swing. Y para que funcione, y que no nos
muestre un error el IDE, debemos importar la librería. Para ello, tenemos dos opciones:
 Importar únicamente la librería especifica de JOptionPane.
 Importar el conjunto de librerías que engloban a la totalidad de Swing.
Si solamente vamos a trabajar con JOptionPane, es aconsejable utilizar la que solo importa dicha
clase y no todas las librerias de Swing. Ya que de esta manera optimizamos mejor los recursos.
También, hay que destacar que es una clase estática (ya que no instanciamos nada para poder
utilizarla).
Tipos de mensaje en JOptionPane
JOptionPane tiene diferentes ventanas de dialogo, entre las que se encuentran:
 JOptionPane.showMessageDialog() nos permite mostrar un mensaje.
 JOptionPane.showInputDialog() nospermite laentradade datos(similaral famosoScanner
de la consola).
 JOptionPane.ConfirmDialog() nospermite hacerpreguntascon varías confirmaciones.Por
ejemplo: Sí, No, Cancelar.
 JOptionPane.showOptionDialog() engloba/unifica los 3 anteriores diálogos.
Método JOptionPane.showMessageDialog()
Bueno, comenzamos con el mensaje más sencillo de todos, el que menos florituras tiene.
Si escribimos JOptionPane y escribimos un . (o pulsamos CONTROL + ESPACIO), se nos abrirá en
asistente con los métodos de showMessageDialog:
JOptionPane.showMessageDialog() con 2 parámetros
Porel momento,seleccionaremosel mássencillode todos,el que solamente tienedosparámetros,
y escribiremos lo siguiente:
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
JOptionPane.showMessageDialog(null,"Javadesde0.com");
}
}
El resultado, sería el siguiente:

Elementos de un JOptionPane
Aquí podemos ver las diferentes partes de una ventana. En este caso, utilizaremos simplemente
tenemos que escojer un método y ver que parámetros necesitamos rellenar y guiarnos con la
información de más abajo.
 ParentComponent o ventana padre: que es el primer parámetro y representa a la ventana
padre. Por el momento la pondremos a null y nos funcionará sin problema (null o
component que puede ser un JFrame).
 Message o mensaje: contiene el texto a mostrar (String).
 Title o título: nos permite introducir un título a la ventana (String).
 Icon o icono: nos permite introduciruniconoa laventana
(EjemploJOptionPane.INFORMATION_MESSAGE).
 messageType:nospermite introducirunnúmero(versegundaimagen.Escribimosunnúmero.
Por ejemplo: 0).
Tipos de iconos de un JOptionPane
Aunque losiconosse puedenhastapersonalizar,esdecir,ponerunopropio(aloque nollegaremos
en este artículo). Vamos a explicar los diferentes tipos que tenemos por defecto y las diferentes
maneras de llamarlos.
JOptionPane.showMessageDialog() con 4 parámetros
Bueno,unavezhemosvisto,loselementosdeJOptionPaneylosiconos.Vamosarealizarunejemplo
con el método showMessageDialog() con 4 parámetros.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "Mensaje sin icono PLAIN_MESSAGE o -1",
"Javadesde0.com", -1);
JOptionPane.showMessageDialog(null, "Mensaje con ERROR_MESSAGE o 0",
"Javadesde0.com", 0);
JOptionPane.showMessageDialog(null, "Mensaje con INFORMATION_MESSAGE o 1",
"Javadesde0.com", 1);
JOptionPane.showMessageDialog(null, "Mensaje con WARNING_MESSAGE o 2",
"Javadesde0.com", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(null, "Mensaje con QUESTION_MESSAGE o 3",
"Javadesde0.com", JOptionPane.QUESTION_MESSAGE);
}
}
El resultado, sería el siguiente:





 Método JOptionPane.showInputDialog()
 ShowInputDialog, nos permite realizar una entrada de datos de forma gráfica.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
Stringmsg = JOptionPane.showInputDialog(null,"Introduce unmensaje");
System.out.println(msg);
}
}
Guardaremos el valor introducido en el ShowInputDialog en un String, como se suele hacer con el
Scanner de la consola. Para finalmente, mostrarlo por consola. El resultado, sería el siguiente:
Método JOptionPane.ConfirmDialog()
ConfirmDialog, nos permite realizar ventanas con múltiples opciones. Una de las más famosas y
justamente laque vamosa haceren el ejemploeslaunmensaje de ¿Deseacerrarlaventana?Y en
esta ventana, nos aparecerán tres botones Yes, No y Cancel. Para capturar si se pulsa un botón,
guardamosel valoren unint y comprobamosel valorde dichavariable mediante aunIF.Si el valor
es0 se habrá pulsadoYes,si es1 seráNo y finalmente,si el valores2,será Cancelos.Mostraremos
los resultados por consola.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int ventanaYesNotCancel = JOptionPane.showConfirmDialog(null, "¿Quieres
salir del programa?", "Javadesde0.com", JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE);
//0=yes, 1=no, 2=cancel
if(ventanaYesNotCancel == 0) {
System.out.println("Has pulsado Yes");
}else if(ventanaYesNotCancel == 1){
System.out.println("Has pulsado No");
}else if(ventanaYesNotCancel == 2){
System.out.println("Has pulsado Cancel");
}
}
}
El resultado, sería el siguiente:
Método JOptionPane.showOptionDialog()
showOptionDialog(),comoya habíamos dichoantes de empezara hablarde los métodos,engloba
los3 métodosde arriba.Portanto,podemoshacercosassimilaresalasanteriores.Eneste ejemplo
que vamos a realizar, crearemos una ventana de dialogo que mostrará 4 botones a partir de un
array. Al pulsar cualquiera de los botones, mostrará el mensaje por la consola.
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
String[] botones = {"Boton A", "Boton B", "Boton C", "Boton D"};
int ventana = JOptionPane.showOptionDialog(null,
"Pulsa un boton:",
"Javadesde0.com",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
botones, botones[0]);
if(ventana == 0) {System.out.println("Opcion A");}
else if(ventana == 1) {System.out.println("Boton B");}
else if(ventana == 2) {System.out.println("Boton C");}
else if(ventana == 3) {System.out.println("Boton D");}
}
}
El resultado, sería el siguiente:
Ventajas y desventajas de JOptionPane
Ventanjas de JOptionPane:
 Simple.
 Flexible.
 Rápido.
 No requiere grandes conocimientos de interfaces para su uso.
Desventajas de JOptionPane:
 Se crea mediante a métodos estáticos, por eso, no hace falta instanciar nada.
 No es muy potente, solamente muestra mensajes de diálogos simples. Si queremos realizar
diálogosmáscomplejos,esdonde entraríaenjuegoJframe,del que hablaremosmásadelante.
Bibliografía
Componentes AWT. (s/f). Recuperado el 15 de abril de 2021, de Buscaminegocio.com
website: http://www.buscaminegocio.com/cursos-de-java/componentes-awt.html
Cuadros de Diálogo con JOptionPane de Swing - Java desde 0. (2019, mayo 18).
Recuperado el 15 de abril de 2021, de Javadesde0.com website:
http://javadesde0.com/cuadros-de-dialogo-con-joptionpane-de-swing/
Garcia, W., & Completo, V. mi P. (s/f). AWT. Recuperado el 15 de abril de 2021, de
Blogspot.com website: https://cursointecapjava.blogspot.com/p/awt.html
Swing: Contenedores y componentes. (s/f). Recuperado el 15 de abril de 2021, de
Uji.es website:
http://www3.uji.es/~belfern/Docencia/Presentaciones/ProgramacionAvanzada/Tem
a3/swing.html

Más contenido relacionado

La actualidad más candente

Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosJosé Antonio Sandoval Acosta
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a ObjetosRafael Miranda
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteJosé Antonio Sandoval Acosta
 
Cuales son las herramientas del menú archivo
Cuales son las herramientas del menú archivoCuales son las herramientas del menú archivo
Cuales son las herramientas del menú archivoLuisa Puerta
 
Programación estructurada y Herramientas estructurada
Programación estructurada y Herramientas estructuradaProgramación estructurada y Herramientas estructurada
Programación estructurada y Herramientas estructuradaLuisAlvarez618
 
Taller De Word
Taller De WordTaller De Word
Taller De Wordsangsr
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetosstill01
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortlinkinpark03
 
Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousJose Tannous
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 CapasFani Calle
 

La actualidad más candente (20)

12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos12 Curso de POO en java - entrada y salida de datos
12 Curso de POO en java - entrada y salida de datos
 
Awt y java swing
Awt y java swingAwt y java swing
Awt y java swing
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Photoshop CS6: Ejercicios
Photoshop CS6: EjerciciosPhotoshop CS6: Ejercicios
Photoshop CS6: Ejercicios
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Clases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programaciónClases/Tipos de lenguajes de programación
Clases/Tipos de lenguajes de programación
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Cuales son las herramientas del menú archivo
Cuales son las herramientas del menú archivoCuales son las herramientas del menú archivo
Cuales son las herramientas del menú archivo
 
Programación estructurada y Herramientas estructurada
Programación estructurada y Herramientas estructuradaProgramación estructurada y Herramientas estructurada
Programación estructurada y Herramientas estructurada
 
Taller De Word
Taller De WordTaller De Word
Taller De Word
 
Presentacion macros
Presentacion macrosPresentacion macros
Presentacion macros
 
Diagramas de objetos
Diagramas de objetosDiagramas de objetos
Diagramas de objetos
 
Buscadores
BuscadoresBuscadores
Buscadores
 
Tipos de datos Java
Tipos de datos JavaTipos de datos Java
Tipos de datos Java
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose Tannous
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 

Similar a Swing, awt y JOptionPane de java

Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing Laura
 
Objetivo interfas a codigo
Objetivo interfas a codigoObjetivo interfas a codigo
Objetivo interfas a codigoRobert Wolf
 
Java 120706083911-phpapp01
Java 120706083911-phpapp01Java 120706083911-phpapp01
Java 120706083911-phpapp01Ricardo Garcia
 
Java construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtJava construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtjbersosa
 
Controles graficos
Controles graficosControles graficos
Controles graficosPacho Angel
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gioRobert Wolf
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gioRobert Wolf
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Ricardo Garcia
 
PLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetPLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetSANTIAGO PABLO ALBERTO
 
Concepto de layout
Concepto de layoutConcepto de layout
Concepto de layoutjbersosa
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposciciónAndy Bsc
 
Manual gui net_beans
Manual gui net_beansManual gui net_beans
Manual gui net_beansYefry Coz
 
Confección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGConfección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGJose Benítez Andrades
 

Similar a Swing, awt y JOptionPane de java (20)

Clase 5 JAVA 2012
Clase 5 JAVA 2012Clase 5 JAVA 2012
Clase 5 JAVA 2012
 
Java GUI La librería Swing
Java GUI La librería Swing Java GUI La librería Swing
Java GUI La librería Swing
 
Objetivo interfas a codigo
Objetivo interfas a codigoObjetivo interfas a codigo
Objetivo interfas a codigo
 
Java 120706083911-phpapp01
Java 120706083911-phpapp01Java 120706083911-phpapp01
Java 120706083911-phpapp01
 
Curso java 6
Curso java 6Curso java 6
Curso java 6
 
Java construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awtJava construye las interfaces gráficas del usuario mediante awt
Java construye las interfaces gráficas del usuario mediante awt
 
Taller 1 7
Taller 1 7Taller 1 7
Taller 1 7
 
Controles graficos
Controles graficosControles graficos
Controles graficos
 
Programación i
Programación iProgramación i
Programación i
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Java
JavaJava
Java
 
Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01Miswing 110511215936-phpapp01
Miswing 110511215936-phpapp01
 
PLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys GrafcetPLC y Electroneumática: Codesys Grafcet
PLC y Electroneumática: Codesys Grafcet
 
Concepto de layout
Concepto de layoutConcepto de layout
Concepto de layout
 
Vbr Awt 01
Vbr Awt 01Vbr Awt 01
Vbr Awt 01
 
Trabajo teórico exposcición
Trabajo teórico exposciciónTrabajo teórico exposcición
Trabajo teórico exposcición
 
Manual gui net_beans
Manual gui net_beansManual gui net_beans
Manual gui net_beans
 
Manual gui net_beans_2.0
Manual gui net_beans_2.0Manual gui net_beans_2.0
Manual gui net_beans_2.0
 
Confección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWINGConfección de interfaces de usuario con JAVA - SWING
Confección de interfaces de usuario con JAVA - SWING
 

Más de Benjamín Joaquín Martínez

Más de Benjamín Joaquín Martínez (20)

Sistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdfSistemas de detección de intrusiones.pdf
Sistemas de detección de intrusiones.pdf
 
Portafolio ingles.pdf
Portafolio ingles.pdfPortafolio ingles.pdf
Portafolio ingles.pdf
 
Tabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdfTabla de llamadas para linux x86_64 bits.pdf
Tabla de llamadas para linux x86_64 bits.pdf
 
Sistema de registro con php
Sistema de registro con phpSistema de registro con php
Sistema de registro con php
 
compiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdfcompiladores6Benjamin133467.pdf
compiladores6Benjamin133467.pdf
 
Compiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdfCompiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdf
 
133467 compiladores 4.pdf
133467 compiladores 4.pdf133467 compiladores 4.pdf
133467 compiladores 4.pdf
 
133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf133467_COMPILADORES3.pdf
133467_COMPILADORES3.pdf
 
133467_COMPILADORES2
133467_COMPILADORES2133467_COMPILADORES2
133467_COMPILADORES2
 
COMPILADORES1.pdf
COMPILADORES1.pdfCOMPILADORES1.pdf
COMPILADORES1.pdf
 
Algoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdfAlgoritmos de búsqueda.pdf
Algoritmos de búsqueda.pdf
 
Logica proposicional
Logica proposicionalLogica proposicional
Logica proposicional
 
Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467Lenguajes para dispositivos moviles 133467
Lenguajes para dispositivos moviles 133467
 
Bd distribuidas
Bd distribuidasBd distribuidas
Bd distribuidas
 
diseño de bases de datos distribuidas
diseño de bases de datos distribuidas   diseño de bases de datos distribuidas
diseño de bases de datos distribuidas
 
procesamiento de consultas distribuidas
procesamiento de consultas distribuidasprocesamiento de consultas distribuidas
procesamiento de consultas distribuidas
 
Algoritmo de INGRES
Algoritmo de INGRES Algoritmo de INGRES
Algoritmo de INGRES
 
Fragmentación
FragmentaciónFragmentación
Fragmentación
 
Modelo cliente servidor
Modelo cliente servidorModelo cliente servidor
Modelo cliente servidor
 
Arquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidasArquitectura de bases de datos distribuidas
Arquitectura de bases de datos distribuidas
 

Swing, awt y JOptionPane de java

  • 1. Elabora: Benjamín Joaquín Martínez Investigación: Javax.swing Awt de java JOptionPane https://www.linkedin.com/in/benjaminjoaquinmartinez/ Javax.swing En el casode Swing,esJavaquienvisualizay gestionalainteraccióndel usuariosobre loselementos de la interface gráfica. Existen clases con el mismo cometido tanto en AWT como en Swing. Por ejemplo, en ambas bibliotecastenemosunaclase paracrearventanasFrame en el casode AWT y JFrame enel casode Swing. Existenotrasclasesque son del paquete AWTperose utilizanenSwing,porejemplo,loseventosy escuchadores. Como no tienen representación gráfica, en Swing se reaprovechan los de AWT. Swing es una biblioteca de clases que permite crear interfaces gráficas de usuario en Java. Swingformaparte delpaqueteestándar,nohace faltaimportarningúnficheroadicionalennuestros proyectos. Swingestáorientadoaobjetos,yusael patrónde diseñoObservador/Observable parainformarde las interacciones del usuario sobre la interface gráfica de usuario. Contenedores y componentes Existen dos elementos básicos para la creación de interfaces gráficas de usuario usando Swing:  Contenedores: Elementos capaces de albergar otros elementos.  Componentes: Elementos que se añaden a contenedores. Usualmente los componentes tienen aspecto gráfico, como un botón. Swing proporciona tres tipos de contenedores de alto nivel. Esto significa que, cualquier otro contenedor que no sea de alto nivel, o componente, debe ir en su interior. Estos tres contenedores de alto nivel son: JFrame, JDialog y JApplet  JFrame: Se visualiza como una ventana principal con marco y barra de título.
  • 2.  JDialog:Se visualizacomounaventanaindependientede laventana principal paramostrar información, como por ejemplo el contenido de un directorio. JApplet:Permite crearaplicacionesconinterface gráficaque se ejecutanenel contextode un navegador web.
  • 3. El primer ejemplo de contenedor: un JFrame: JFrameventana=newJFrame("PrimeraVentana"); ventana.setSize(400,400); ventana.setVisible(true); Quizás, veamos ejemplos donde se extiende a la clase JFrame para crear la ventana: publicclassVentanaextendsJFrame{ privateVentana(){ super("PrimeraVentana"); } privatevoidejecuta(){ setSize(400,400); setVisible(true); } publicstaticvoidmain(String[]args){ newVentana().ejecuta(); } } La desventaja de esta opción es que esta clase no puede extender a ninguna otra.
  • 4. Una vezque hemoscreadouncontenedor,loscomponenteslosañadiremossiguiendolassiguientes reglas:  Un componente se visualizará si lo hemos añadido a un contenedor.  Un componente sólo se puede añadir una vez a un contenedor.  Los componentes los debemos añadir al panel del contenedor. Un primer componente, un botón. JFrameventana=newJFrame("PrimeraVentana"); JButtonboton=newJButton("Unbotón"); ventana.getContentPane().add(boton);//Añadimosalpaneldelaventana. ventana.setSize(400,400); ventana.setVisible(true);  El botón lo añadimos al panel de la ventana principal.  El botón ocupa todo el tamaño de la ventana.  El botón se comporta como tal, pero no hace nada. Para añadir componentes, u otros contenedores, a la ventana principal,hay que hacerlo sobre su panel, y no directamente sobre la ventana. Como programadores, no hace falta que nos ocupemos de la organización de los componentes dentro de los contenedores. Swing nos ofrece gestores de aspecto capaces de organizar, de manera automática, la posición y tamaño de los componentes dentro de los contenedores. Los contenedores tienenasignado, por defecto, alguno de estos gestores de aspecto. En el caso de JFrame este gestor es BorderLayout.
  • 5. Este esel comportamientode estegestordeaspecto.Define5zonas,encadaunade las cualessólo podemos añadir un componente. Si no existe alguna de las zonas, la central se extiende hasta ocupar toda la ventana.
  • 6. El código para generar las imágenes anteriores: JFrameventana=newJFrame("BorderLayoutManager"); Containercontenedor=ventana.getContentPane(); contenedor.add(newJButton("BorderLayout.CENTER"), BorderLayout.CENTER); contenedor.add(newJButton("BorderLayout.NORTH"),BorderLayout.NORTH); contenedor.add(newJButton("BorderLayout.SOUTH"),BorderLayout.SOUTH); contenedor.add(newJButton("BorderLayout.EAST"),BorderLayout.EAST); contenedor.add(newJButton("BorderLayout.WEST"),BorderLayout.WEST); ventana.setSize(500,500); ventana.setVisible(true); Otro contenedor muy utilizado es JPanel. Este contenedor no tiene ningúnaspecto visual,sirve como contenedor de otros componenetes y contenedores. Por defecto, JPanel tiene un FlowLayout como gestor de aspecto. FlowLayout distribuye los componentes de izquierda a derecha y de arriba hacia abajo, a medida que los añadimos. El código del ejemplo anterior: JFrameventana=newJFrame("FlowLayoutManager"); Containercontenedor=ventana.getContentPane(); JPanelpanel=newJPanel();//Estepanelcontieneloscomponentes.
  • 7. panel.add(newJButton("Uno")); panel.add(newJButton("Dos")); panel.add(newJButton("Tres")); panel.add(newJButton("Cuatro")); panel.add(newJButton("Cinco")); contenedor.add(panel); ventana.setSize(200,200); ventana.setVisible(true); Cada contenedor tiene un gestor de aspecto por defecto. Pero lo podemos cambiar: JFrameventana=newJFrame("FlowLayoutManager"); Containercontenedor=ventana.getContentPane(); //Cambiamoselgestordeaspecto. contenedor.setLayout(newFlowLayout()); contenedor.add(newJButton("Uno")); contenedor.add(newJButton("Dos")); contenedor.add(newJButton("Tres")); contenedor.add(newJButton("Cuatro")); contenedor.add(newJButton("Cinco")); ventana.setSize(200,200); ventana.setVisible(true); El aspecto final de la interface gráfica es el mismo que usando un JPanel.
  • 8. Existenotros gestoresdeaspecto,porejemplo GridLayoutnospermitecolocarloscomponentesen una rejilla: El código del ejemplo anterior: JFrameventana=newJFrame("GridLayoutManager"); ventana.setLayout(newGridLayout(2,3)); Containercontenedor=ventana.getContentPane(); contenedor.add(newJButton("Uno")); contenedor.add(newJButton("Dos")); contenedor.add(newJButton("Tres")); contenedor.add(newJButton("Cuatro")); contenedor.add(newJButton("Cinco")); ventana.setSize(500,500); ventana.setVisible(true); En este caso, la rejilla es 2 filas por 3 columnas.
  • 9. BoxLayout nos permite colocar los componentes vertical u horizontalmente: Por defecto, los componentes se alinean a la izquierda. El código del ejemplo anterior; JFrameventana=newJFrame("BoxLayoutManager"); Containercontenedor=ventana.getContentPane(); contenedor.setLayout(newBoxLayout(contenedor,BoxLayout.PAGE_AXIS)); contenedor.add(newJButton("Uno")); contenedor.add(newJButton("Dos")); contenedor.add(newJButton("Tres")); contenedor.add(newJButton("Cutro")); contenedor.add(newJButton("Cinco")); ventana.setSize(400,400); ventana.setVisible(true); La alineación es propia de cada componente. Para alinear en el centro:
  • 10. El código del ejemplo anterior: JButtonboton=newJButton("Uno"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); contenedor.add(boton); boton=newJButton("Dos"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); contenedor.add(boton); boton=newJButton("Tres"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); contenedor.add(boton); boton=newJButton("Cuatro"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); contenedor.add(boton); boton=newJButton("Cinco"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); contenedor.add(boton); Swingeslosuficientementeinteligente comoparacalcularel tamañoóptimode laventana,apartir de los componentes que contiene. Para ello, basta sustituir: ventana.setSize(400,400);
  • 11. Por: ventana.pack(); Swing calcula el tamaño óptimo para que se vean todos los componentes que hemos añadido. La ventaja es que, si fijamos nosotros el tamaño, puede que al cambiar de SO el aspecto no sea el que nosotrosqueremos,yaque,porejemplo,el anchodel tipode letranoesel mismoentodoslos SOs. La idea básica en el uso de contenedores, para crear la interface gráfica de una aplicación, es que los contenedores se pueden anidar dentro de otros contenedores. En ejemplo anterior, los botones horizontales se han añadido a un panel -JPanel dispone de un FlowLayout como gestor de aspecto por defecto-, y el panel a la región norte de la ventana. JPanelpanelNorte=newJPanel(); panelNorte.add(newJButton("Norte1")); panelNorte.add(newJButton("Norte2")); panelNorte.add(newJButton("Norte3")); contenedor.add(panelNorte,BorderLayout.NORTH);
  • 12. Los botones verticalesse han añadido a un panel al que se le ha modificado su gestor de aspecto, para que seaBoxLayout. Además, la alineación de cada uno de los botones se ha fijado como centrada. Finalmente, el panel se ha añadido a la región central de la ventana. JPanelpanelCentro=newJPanel(); panelCentro.setLayout(newBoxLayout(panelCentro,BoxLayout.PAGE_AXIS)); JButtonboton=newJButton("Centro1"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); panelCentro.add(boton); boton=newJButton("Centro2"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); panelCentro.add(boton); boton=newJButton("Centro3"); boton.setAlignmentX(Component.CENTER_ALIGNMENT); panelCentro.add(boton); contenedor.add(panelCentro); La ideabásicaespoderagrupar contenedoresdentrode otroscontenedores,de este modo,conun poco de experiencia, siempre conseguiremos que el aspecto de las aplicaciones sea el que deseamos.
  • 13. Awt de java Abstract WindowToolkit. (AWT,enespañol Kitde Herramientasde Ventana Abstracta). Conjunto de herramientas GUI (Interfaz Gráfica con el Usuario) diseñadas para trabajar con múltiples plataformas.Interfazde usuario,ysistemade ventanasindependientede laplataformaoriginal de Lenguaje de programaciónJava.AWTesparte de lasJava FoundationClasses(JFC) - laAPIestándar para suministrar una interfaz gráfica de usuario (GUI) para un programa Java. Los componentes de AWT dependen de componentes de código nativo, por lo que a los componentes se les suele llamar “heavyweight components” (componentes pesados). AWTestápensadoparaaplicacionesque corranennavegadoresantiguosydefinidoconlosmínimos de cualquieraplicación,esporestoque noincluye componentescomplejoscomopuedensertablas, vistas de árbol, barras de progreso y otros. Como todas las clases de Java, los componentes awt utilizados en el AWT pertenecen a una determinada jerarquía de clases, que es muy importante conocer. Todos los componentes desciendende laclase Component,de laque pueden yaheredaralgunosmétodosinteresantes.El package al que pertenecen estas clases se llama java.awt y estas clases son:  Button Canvas Checkbox Choice  FileDialog  Dialog Frame  Window Panel ScrollPane  Container Label List Scrollbar  TextArea TextField  TextComponent  Component  Object
  • 14. Características de los componentes 1. Todoslos Componentesawt (exceptoWindow ylosquederivande ella)debenserañadidos a un Container. También un Container puede ser añadido a otro Container. 2. Para añadir un Componenta un Containerse utilizael métodoadd() de la clase Container: containerName.add(componentName); 3. Los Containers de máximo nivel son las Windows (Frames y Dialogs). Los Panels y ScrollPanes deben estar siempre dentro de otro Container. 4. Un ComponentsólopuedeestarenunContainer.Si estáenunContaineryse añade aotro, deja de estar en el primero. 5. La clase Component tiene una serie de funcionalidades básicas comunes (variables y métodos) que son heredadas por todas sus sub-clases. Jerarquía de eventos Todos los eventos de Java 1.1 y Java 1.2 son objetos de clasesque pertenecena una determinada jerarquíade clases.Lasuper-claseEventObjectpertenece al packagejava.util.De EventObjectderiva la clase AWTEvent, de la que dependen todos los eventosde AWT. Por conveniencia,estas clases están agrupadas en el package java.awt.event. Los eventos de Java pueden ser de alto y bajo nivel. Los eventos de alto nivel se llaman también eventos semánticos, porque la acción de la que derivan tiene un significado en sí misma, en el contextode lasinterfacesgráficasdeusuario.Loseventosde bajonivelsonlasaccioneselementales que hacen posible los eventos de alto nivel. Son eventos de alto nivel los siguientes eventos: los cuatro que tienenque vercon dar clicksobre botoneso elegircomandosenmenús(ActionEvent), cambiar valores en barras de desplazamiento (AdjustmentEvent), elegir valores (ItemEvents) y cambiar el texto (TextEvent). Los eventos de bajo nivel son los que se producen con las operaciones elementales con el ratón, teclado,containersywindows.Lasseisclasesde eventosde bajonivelsonloseventosrelacionados
  • 15. con componentes (ComponentEvent), con los containers (ContainerEvent), con pulsar teclas (KeyEvent),conmover,arrastrar, pulsary soltarcon el ratón (MouseEvent),conobtenero perder el focus(FocusEvent) ycon las operacionesconventanas(WindowEvent).El modelode eventosse complicacuando se quiere construirun tipode componente propio,noestándardel AWT. En este caso hay que interceptarloseventosde bajonivelde Javayadecuarlosal problemaque se tratade resolver.
  • 16. JOptionPane JOptionPane es una clase que nos provee una conjunto de ventanasde dialogoque es ideal, para mostrar mensajes al usuario. Ya sean informativos, advertencias, errores, confirmaciones… O incluso tenemos la posibilidad de solicitar la introducción de un dato. Esta clase la encontramos dentro del paquete javax.swing. Y para que funcione, y que no nos muestre un error el IDE, debemos importar la librería. Para ello, tenemos dos opciones:  Importar únicamente la librería especifica de JOptionPane.  Importar el conjunto de librerías que engloban a la totalidad de Swing. Si solamente vamos a trabajar con JOptionPane, es aconsejable utilizar la que solo importa dicha clase y no todas las librerias de Swing. Ya que de esta manera optimizamos mejor los recursos. También, hay que destacar que es una clase estática (ya que no instanciamos nada para poder utilizarla). Tipos de mensaje en JOptionPane JOptionPane tiene diferentes ventanas de dialogo, entre las que se encuentran:  JOptionPane.showMessageDialog() nos permite mostrar un mensaje.  JOptionPane.showInputDialog() nospermite laentradade datos(similaral famosoScanner de la consola).  JOptionPane.ConfirmDialog() nospermite hacerpreguntascon varías confirmaciones.Por ejemplo: Sí, No, Cancelar.  JOptionPane.showOptionDialog() engloba/unifica los 3 anteriores diálogos. Método JOptionPane.showMessageDialog() Bueno, comenzamos con el mensaje más sencillo de todos, el que menos florituras tiene. Si escribimos JOptionPane y escribimos un . (o pulsamos CONTROL + ESPACIO), se nos abrirá en asistente con los métodos de showMessageDialog: JOptionPane.showMessageDialog() con 2 parámetros Porel momento,seleccionaremosel mássencillode todos,el que solamente tienedosparámetros, y escribiremos lo siguiente: import javax.swing.JOptionPane;
  • 17. public class Main { public static void main(String[] args){ JOptionPane.showMessageDialog(null,"Javadesde0.com"); } } El resultado, sería el siguiente:  Elementos de un JOptionPane Aquí podemos ver las diferentes partes de una ventana. En este caso, utilizaremos simplemente tenemos que escojer un método y ver que parámetros necesitamos rellenar y guiarnos con la información de más abajo.
  • 18.  ParentComponent o ventana padre: que es el primer parámetro y representa a la ventana padre. Por el momento la pondremos a null y nos funcionará sin problema (null o component que puede ser un JFrame).  Message o mensaje: contiene el texto a mostrar (String).  Title o título: nos permite introducir un título a la ventana (String).  Icon o icono: nos permite introduciruniconoa laventana (EjemploJOptionPane.INFORMATION_MESSAGE).  messageType:nospermite introducirunnúmero(versegundaimagen.Escribimosunnúmero. Por ejemplo: 0). Tipos de iconos de un JOptionPane Aunque losiconosse puedenhastapersonalizar,esdecir,ponerunopropio(aloque nollegaremos en este artículo). Vamos a explicar los diferentes tipos que tenemos por defecto y las diferentes maneras de llamarlos.
  • 19. JOptionPane.showMessageDialog() con 4 parámetros Bueno,unavezhemosvisto,loselementosdeJOptionPaneylosiconos.Vamosarealizarunejemplo con el método showMessageDialog() con 4 parámetros. import javax.swing.JOptionPane; public class Main { public static void main(String[] args){ JOptionPane.showMessageDialog(null, "Mensaje sin icono PLAIN_MESSAGE o -1", "Javadesde0.com", -1); JOptionPane.showMessageDialog(null, "Mensaje con ERROR_MESSAGE o 0", "Javadesde0.com", 0); JOptionPane.showMessageDialog(null, "Mensaje con INFORMATION_MESSAGE o 1", "Javadesde0.com", 1); JOptionPane.showMessageDialog(null, "Mensaje con WARNING_MESSAGE o 2", "Javadesde0.com", JOptionPane.WARNING_MESSAGE);
  • 20. JOptionPane.showMessageDialog(null, "Mensaje con QUESTION_MESSAGE o 3", "Javadesde0.com", JOptionPane.QUESTION_MESSAGE); } } El resultado, sería el siguiente:     
  • 21.  Método JOptionPane.showInputDialog()  ShowInputDialog, nos permite realizar una entrada de datos de forma gráfica. import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { Stringmsg = JOptionPane.showInputDialog(null,"Introduce unmensaje"); System.out.println(msg); } } Guardaremos el valor introducido en el ShowInputDialog en un String, como se suele hacer con el Scanner de la consola. Para finalmente, mostrarlo por consola. El resultado, sería el siguiente: Método JOptionPane.ConfirmDialog() ConfirmDialog, nos permite realizar ventanas con múltiples opciones. Una de las más famosas y justamente laque vamosa haceren el ejemploeslaunmensaje de ¿Deseacerrarlaventana?Y en esta ventana, nos aparecerán tres botones Yes, No y Cancel. Para capturar si se pulsa un botón, guardamosel valoren unint y comprobamosel valorde dichavariable mediante aunIF.Si el valor
  • 22. es0 se habrá pulsadoYes,si es1 seráNo y finalmente,si el valores2,será Cancelos.Mostraremos los resultados por consola. import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { int ventanaYesNotCancel = JOptionPane.showConfirmDialog(null, "¿Quieres salir del programa?", "Javadesde0.com", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); //0=yes, 1=no, 2=cancel if(ventanaYesNotCancel == 0) { System.out.println("Has pulsado Yes"); }else if(ventanaYesNotCancel == 1){ System.out.println("Has pulsado No"); }else if(ventanaYesNotCancel == 2){ System.out.println("Has pulsado Cancel"); } } } El resultado, sería el siguiente:
  • 23. Método JOptionPane.showOptionDialog() showOptionDialog(),comoya habíamos dichoantes de empezara hablarde los métodos,engloba los3 métodosde arriba.Portanto,podemoshacercosassimilaresalasanteriores.Eneste ejemplo que vamos a realizar, crearemos una ventana de dialogo que mostrará 4 botones a partir de un array. Al pulsar cualquiera de los botones, mostrará el mensaje por la consola. import javax.swing.JOptionPane; public class Main { public static void main(String[] args) { String[] botones = {"Boton A", "Boton B", "Boton C", "Boton D"}; int ventana = JOptionPane.showOptionDialog(null, "Pulsa un boton:", "Javadesde0.com", JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE, null, botones, botones[0]); if(ventana == 0) {System.out.println("Opcion A");} else if(ventana == 1) {System.out.println("Boton B");} else if(ventana == 2) {System.out.println("Boton C");} else if(ventana == 3) {System.out.println("Boton D");} } } El resultado, sería el siguiente:
  • 24. Ventajas y desventajas de JOptionPane Ventanjas de JOptionPane:  Simple.  Flexible.  Rápido.  No requiere grandes conocimientos de interfaces para su uso. Desventajas de JOptionPane:  Se crea mediante a métodos estáticos, por eso, no hace falta instanciar nada.  No es muy potente, solamente muestra mensajes de diálogos simples. Si queremos realizar diálogosmáscomplejos,esdonde entraríaenjuegoJframe,del que hablaremosmásadelante. Bibliografía Componentes AWT. (s/f). Recuperado el 15 de abril de 2021, de Buscaminegocio.com website: http://www.buscaminegocio.com/cursos-de-java/componentes-awt.html Cuadros de Diálogo con JOptionPane de Swing - Java desde 0. (2019, mayo 18). Recuperado el 15 de abril de 2021, de Javadesde0.com website: http://javadesde0.com/cuadros-de-dialogo-con-joptionpane-de-swing/ Garcia, W., & Completo, V. mi P. (s/f). AWT. Recuperado el 15 de abril de 2021, de Blogspot.com website: https://cursointecapjava.blogspot.com/p/awt.html Swing: Contenedores y componentes. (s/f). Recuperado el 15 de abril de 2021, de Uji.es website: http://www3.uji.es/~belfern/Docencia/Presentaciones/ProgramacionAvanzada/Tem a3/swing.html