[{"data":1,"prerenderedAt":853},["ShallowReactive",2],{"navigation_docs":3,"-gui-build-gui":298,"-gui-build-gui-surround":848},[4,18,70,105,149,178,212,257],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Evaluación","\u002Fintroduction","1.introduction\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Método de Evaluación","i-iconamoon-cheque-bold",{"title":13,"path":14,"stem":15,"icon":16},"Plataforma de Aprendizaje","\u002Fintroduction\u002Fplataforma","1.introduction\u002F2.plataforma","i-lucide-book-marked","i-lucide-house",{"title":19,"path":20,"stem":21,"children":22,"icon":25},"Interfaz Gráfica de Usuario","\u002Fgui","2.gui\u002F01.index",[23,26,30,34,38,42,46,50,54,58,62,66],{"title":24,"path":20,"stem":21,"icon":25},"¿Qué es una Interfaz Gráfica de Usuario (GUI)?","i-carbon-gui-management",{"title":27,"path":28,"stem":29,"icon":25},"Creación de Interfaces Gráficas de Usuario (GUI)","\u002Fgui\u002Fbuild-gui","2.gui\u002F02.build-gui",{"title":31,"path":32,"stem":33,"icon":25},"Componentes Básicos de Swing","\u002Fgui\u002Fcomponentes-basicos","2.gui\u002F03.componentes-basicos",{"title":35,"path":36,"stem":37},"El componente JFrame","\u002Fgui\u002Fjframe","2.gui\u002F04.jframe",{"title":39,"path":40,"stem":41},"El componente JPanel","\u002Fgui\u002Fjpanel","2.gui\u002F05.jpanel",{"title":43,"path":44,"stem":45},"El componente JButton","\u002Fgui\u002Fjbutton","2.gui\u002F06.jbutton",{"title":47,"path":48,"stem":49,"icon":25},"Elementos de texto en interfaces gráficas con Swing","\u002Fgui\u002Ftext","2.gui\u002F07.text",{"title":51,"path":52,"stem":53},"Elementos Visuales","\u002Fgui\u002Felementos-visuales","2.gui\u002F08.elementos-visuales",{"title":55,"path":56,"stem":57,"icon":25},"Eventos en Swing","\u002Fgui\u002Feventos","2.gui\u002F09.eventos",{"title":59,"path":60,"stem":61,"icon":25},"Controles en Swing","\u002Fgui\u002Fcontroles","2.gui\u002F10.controles",{"title":63,"path":64,"stem":65,"icon":25},"Atributos Comunes de los Componentes de Diseño","\u002Fgui\u002Fatributos-comunes","2.gui\u002F11.atributos-comunes",{"title":67,"path":68,"stem":69,"icon":25},"Layouts","\u002Fgui\u002Flayout","2.gui\u002F12.layout",{"title":71,"icon":25,"path":72,"stem":73,"children":74,"page":104},"Personalización","\u002Fpersonalizacion","3.personalizacion",[75,79,84,88,92,96,100],{"title":76,"path":77,"stem":78},"Jerarquía de clases en Swing","\u002Fpersonalizacion\u002Fjerarquia","3.personalizacion\u002F01.jerarquia",{"title":80,"path":81,"stem":82,"icon":83},"Personalización Inicial de Componentes Swing","\u002Fpersonalizacion\u002Fpersonalizacion-inicial","3.personalizacion\u002F02.personalizacion-inicial","i-carbon-palette",{"title":85,"path":86,"stem":87,"icon":83},"Tema y Personalización Avanzada en Swing","\u002Fpersonalizacion\u002Ftheme","3.personalizacion\u002F03.theme",{"title":89,"path":90,"stem":91,"icon":83},"Pintando en Swing","\u002Fpersonalizacion\u002Fpaint","3.personalizacion\u002F04.paint",{"title":93,"path":94,"stem":95,"icon":83},"Mi Tema 1: Comenzando con la Personalización","\u002Fpersonalizacion\u002Ftheme-start","3.personalizacion\u002F05.theme-start",{"title":97,"path":98,"stem":99,"icon":83},"UI Delegates: Personalizando la Apariencia de los Componentes","\u002Fpersonalizacion\u002Fui-delegates","3.personalizacion\u002F06.ui-delegates",{"title":101,"path":102,"stem":103,"icon":83},"Empleado delegadores de UI para personalizar la apariencia de los componentes","\u002Fpersonalizacion\u002Ftheme-02","3.personalizacion\u002F07.theme-02",false,{"title":106,"path":107,"stem":108,"children":109,"icon":148},"Programación concurrente","\u002Fconcurrencia","4.concurrencia\u002F01.index",[110,112,116,120,124,128,132,136,140,144],{"title":111,"path":107,"stem":108,"icon":83},"¿Qué es la concurrencia?",{"title":113,"path":114,"stem":115,"icon":83},"Unidades de Ejecución","\u002Fconcurrencia\u002Funidades-ejecucion","4.concurrencia\u002F02.unidades-ejecucion",{"title":117,"path":118,"stem":119,"icon":83},"Programa de flujo único y de flujo múltiple","\u002Fconcurrencia\u002Fflujos","4.concurrencia\u002F03.flujos",{"title":121,"path":122,"stem":123,"icon":83},"Hilos con Thread y Runnable","\u002Fconcurrencia\u002Fthread-runnable","4.concurrencia\u002F04.thread-runnable",{"title":125,"path":126,"stem":127},"Paralelismo V.S. Concurrencia","\u002Fconcurrencia\u002Fparalelismo","4.concurrencia\u002F05.paralelismo",{"title":129,"path":130,"stem":131,"icon":83},"Problemas clásicos de concurrencia","\u002Fconcurrencia\u002Fproblemas","4.concurrencia\u002F06.problemas",{"title":133,"path":134,"stem":135,"icon":83},"Emulando condiciones de carrera en Java","\u002Fconcurrencia\u002Fcondiciones-carrera","4.concurrencia\u002F07.condiciones-carrera",{"title":137,"path":138,"stem":139,"icon":83},"Semáforos en Java","\u002Fconcurrencia\u002Fsemaforos","4.concurrencia\u002F08.semaforos",{"title":141,"path":142,"stem":143,"icon":83},"La clase Timer en Java Swing","\u002Fconcurrencia\u002Ftimer","4.concurrencia\u002F09.timer",{"title":145,"path":146,"stem":147,"icon":83},"Algoritmos de ordenamiento de procesos","\u002Fconcurrencia\u002Falgoritmos-procesos","4.concurrencia\u002F10.algoritmos-procesos","i-carbon-parallel-groups",{"title":150,"path":151,"stem":152,"children":153,"icon":177},"Acceso a datos","\u002Fdatos","5.datos\u002F01.index",[154,157,161,165,169,173],{"title":155,"path":151,"stem":152,"icon":156},"Java y las bases de datos","i-carbon-database",{"title":158,"path":159,"stem":160},"Cliente Servidor","\u002Fdatos\u002Fcliente-servidor","5.datos\u002F02.cliente-servidor",{"title":162,"path":163,"stem":164},"CRUD","\u002Fdatos\u002Fcrud","5.datos\u002F03.crud",{"title":166,"path":167,"stem":168},"Sentencias Preparadas con JDBC","\u002Fdatos\u002Fsentencia-preparada","5.datos\u002F04.sentencia-preparada",{"title":170,"path":171,"stem":172},"DAO (Data Access Object)","\u002Fdatos\u002Fdao","5.datos\u002F05.dao",{"title":174,"path":175,"stem":176},"Usando Hibernate ORM","\u002Fdatos\u002Form","5.datos\u002F06.orm","i-gravity-ui-database-fill",{"title":179,"path":180,"stem":181,"children":182,"icon":211},"Programación móvil","\u002Fmovil","6.movil\u002F01.index",[183,186,191,195,199,203,207],{"title":184,"path":180,"stem":181,"icon":185},"¿Qué es Android y Kotlin?","i-carbon-mobile",{"title":187,"path":188,"stem":189,"icon":190},"¿Qué es Android Studio?","\u002Fmovil\u002Fandroid-studio","6.movil\u002F02.android-studio","i-carbon-application",{"title":192,"path":193,"stem":194,"icon":190},"¿Qué es Jetpack Compose?","\u002Fmovil\u002Fjetpack-compose","6.movil\u002F03.jetpack-compose",{"title":196,"path":197,"stem":198},"Filas y Columnas con Jetpack Compose","\u002Fmovil\u002Ffilas-columnas","6.movil\u002F04.filas-columnas",{"title":200,"path":201,"stem":202,"icon":190},"Componentes Básicos en Jetpack Compose","\u002Fmovil\u002Fcomponentes-basicos","6.movil\u002F05.componentes-basicos",{"title":204,"path":205,"stem":206,"icon":190},"Las Intenciones en Android con Jetpack Compose","\u002Fmovil\u002Fintentions","6.movil\u002F06.intentions",{"title":208,"path":209,"stem":210,"icon":190},"Navegación en Android con Jetpack Compose","\u002Fmovil\u002Fnavegacion","6.movil\u002F07.navegacion","phone_android",{"title":213,"icon":25,"path":214,"stem":215,"children":216,"page":104},"Ejemplos","\u002Fejemplos","7.ejemplos",[217,221,225,229,233,237,241,245,249,253],{"title":218,"path":219,"stem":220},"Ejemplo 01: Creando un validador abstracto de expresiones","\u002Fejemplos\u002Fejemplo-01","7.ejemplos\u002F01.ejemplo-01",{"title":222,"path":223,"stem":224},"Ejemplo 02: Diferencias de validar un JTextField y un JFormattedTextField","\u002Fejemplos\u002Fejemplo-02","7.ejemplos\u002F02.ejemplo-02",{"title":226,"path":227,"stem":228},"Ejemplo 03: Creando una Aplicación con GUI en Java Swing","\u002Fejemplos\u002Fejemplo-03","7.ejemplos\u002F03.ejemplo-03",{"title":230,"path":231,"stem":232},"Ejemplo 4: Estilizando componentes Swing con Delegadores","\u002Fejemplos\u002Fejemplo-04","7.ejemplos\u002F04.ejemplo-04",{"title":234,"path":235,"stem":236,"icon":83},"Ejemplo 5: Uso de Hilos con Thread y Runnable","\u002Fejemplos\u002Fejemplo-05","7.ejemplos\u002F05.ejemplo-05",{"title":238,"path":239,"stem":240,"icon":83},"Ejemplo 06: Manejando Hilos de formas Diferentes en Java","\u002Fejemplos\u002Fejemplo-06","7.ejemplos\u002F06.ejemplo-06",{"title":242,"path":243,"stem":244,"icon":83},"Ejemplo 7: Condiciones de carrera en Java","\u002Fejemplos\u002Fejemplo-07","7.ejemplos\u002F07.ejemplo-07",{"title":246,"path":247,"stem":248,"icon":83},"Ejemplo 8: Control de acceso a recursos compartidos con semáforos","\u002Fejemplos\u002Fejemplo-08","7.ejemplos\u002F08.ejemplo-08",{"title":250,"path":251,"stem":252,"icon":83},"Ejemplo 9: El restaurante y los pedidos","\u002Fejemplos\u002Fejemplo-09","7.ejemplos\u002F09.ejemplo-09",{"title":254,"path":255,"stem":256},"Ejemplo 10: Proceso FIFO (First In, First Out) con Semáforos y Swing","\u002Fejemplos\u002Fejemplo-10","7.ejemplos\u002F10.ejemplo-10",{"title":258,"icon":25,"path":259,"stem":260,"children":261,"page":104},"Actividades","\u002Factividades","8.actividades",[262,266,270,274,278,282,286,290,294],{"title":263,"path":264,"stem":265,"icon":25},"Actividad 1: Introducción al diseño de interfaces","\u002Factividades\u002Fact-01","8.actividades\u002F01.act-01",{"title":267,"path":268,"stem":269,"icon":25},"Actividad 2: Diseño de wireframes y prototipos","\u002Factividades\u002Fact-02","8.actividades\u002F02.act-02",{"title":271,"path":272,"stem":273,"icon":25},"Actividad 3: Propuesta de Proyecto y Wireframe inicial","\u002Factividades\u002Fact-03","8.actividades\u002F03.act-03",{"title":275,"path":276,"stem":277,"icon":83},"Actividad 4: Temas y Componentes Personalizados en Swing","\u002Factividades\u002Fact-04","8.actividades\u002F04.act-04",{"title":279,"path":280,"stem":281,"icon":83},"Actividad 5: Explicando la Concurrencia a un Niño de 5 Años","\u002Factividades\u002Fact-05","8.actividades\u002F05.act-05",{"title":283,"path":284,"stem":285,"icon":83},"Actividad 6: Simulación de una cocina con múltiples chefs (hilos)","\u002Factividades\u002Fact-06","8.actividades\u002F06.act-06",{"title":287,"path":288,"stem":289,"icon":83},"Actividad 7: Sistema de retiro bancario","\u002Factividades\u002Fact-07","8.actividades\u002F07.act-07",{"title":291,"path":292,"stem":293,"icon":83},"Actividad 8: Simulación de Round Robin con hilos e Interfaz Gráfica","\u002Factividades\u002Fact-08","8.actividades\u002F08.act-08",{"title":295,"path":296,"stem":297,"icon":83},"Actividad 9: CRUD con Hibernate y Swing","\u002Factividades\u002Fact-09","8.actividades\u002F09.act-09",{"id":299,"title":27,"body":300,"description":841,"extension":842,"links":843,"meta":844,"navigation":845,"path":28,"seo":846,"stem":29,"__hash__":847},"docs\u002F2.gui\u002F02.build-gui.md",{"type":301,"value":302,"toc":828},"minimark",[303,307,312,315,318,321,325,328,331,419,422,426,429,514,518,521,757,779,782,785,788,821,824],[304,305,306],"p",{},"En esta sección, aprenderemos a construir interfaces gráficas de usuario (GUI) utilizando Java y la biblioteca Swing. Las GUI son esenciales para crear aplicaciones interactivas y atractivas que mejoren la experiencia del usuario. A lo largo de este módulo, exploraremos los conceptos básicos de Swing, cómo diseñar ventanas y componentes, y cómo manejar eventos para crear aplicaciones funcionales.",[308,309,311],"h2",{"id":310},"introducción-a-swing","Introducción a Swing",[304,313,314],{},"Swing es una biblioteca de Java que proporciona un conjunto de componentes gráficos para construir interfaces de usuario. Es parte del paquete Java Foundation Classes (JFC) y ofrece una amplia variedad de elementos, como botones, etiquetas, cuadros de texto, menús y paneles, que se pueden utilizar para diseñar aplicaciones GUI.",[304,316,317],{},"Algo que hay que destacar de Swing es que es independiente del sistema operativo, lo que significa que las aplicaciones desarrolladas con Swing pueden ejecutarse en cualquier plataforma que soporte Java, manteniendo una apariencia consistente.",[304,319,320],{},"Así mismo, Swing es altamente personalizable, lo que permite a los desarrolladores modificar la apariencia y el comportamiento de los componentes para adaptarse a las necesidades específicas de la aplicación.",[308,322,324],{"id":323},"swing-vs-awt","Swing vs AWT",[304,326,327],{},"Antes de profundizar en Swing, es importante mencionar AWT (Abstract Window Toolkit), que es otra biblioteca de Java para crear interfaces gráficas. AWT fue la primera biblioteca GUI de Java, pero tiene algunas limitaciones en comparación con Swing. Swing ofrece una mayor variedad de componentes y es más flexible en términos de personalización. Además, Swing utiliza un modelo de renderizado basado en Java, lo que permite una apariencia más consistente en diferentes plataformas.",[304,329,330],{},"Podemos entender mejor las diferencias entre Swing y AWT con la siguiente tabla:",[332,333,334,350],"table",{},[335,336,337],"thead",{},[338,339,340,344,347],"tr",{},[341,342,343],"th",{},"Característica",[341,345,346],{},"AWT",[341,348,349],{},"Swing",[351,352,353,365,376,387,397,408],"tbody",{},[338,354,355,359,362],{},[356,357,358],"td",{},"Componentes",[356,360,361],{},"Limitados y básicos",[356,363,364],{},"Amplia variedad y personalizables",[338,366,367,370,373],{},[356,368,369],{},"Apariencia",[356,371,372],{},"Depende del sistema operativo",[356,374,375],{},"Independiente del sistema operativo",[338,377,378,381,384],{},[356,379,380],{},"Renderizado",[356,382,383],{},"Basado en el sistema operativo",[356,385,386],{},"Basado en Java",[338,388,389,391,394],{},[356,390,71],{},[356,392,393],{},"Limitada",[356,395,396],{},"Alta",[338,398,399,402,405],{},[356,400,401],{},"Soporte de MVC",[356,403,404],{},"No",[356,406,407],{},"Sí",[338,409,410,413,416],{},[356,411,412],{},"Contenedores",[356,414,415],{},"Menos flexibles",[356,417,418],{},"Más flexibles",[304,420,421],{},"En resumen, Swing es una opción más avanzada y flexible para desarrollar interfaces gráficas en Java, y es la biblioteca que utilizaremos en este módulo para construir nuestras aplicaciones GUI.",[308,423,425],{"id":424},"configuración-del-entorno-de-desarrollo","Configuración del Entorno de Desarrollo",[304,427,428],{},"Para comenzar a desarrollar aplicaciones GUI con Java y Swing, necesitaremos configurar nuestro entorno de desarrollo. A continuación, se describen los pasos básicos para instalar Java Development Kit (JDK) y un entorno de desarrollo integrado (IDE) como IntelliJ IDEA o Eclipse.",[430,431,433,437,447,467,471,474,499,504,508,511],"steps",{"level":432},"2",[308,434,436],{"id":435},"instalar-java-development-kit-jdk","Instalar Java Development Kit (JDK)",[304,438,439,440,446],{},"Primero, debemos asegurarnos de tener instalado el JDK en nuestra máquina. Podemos descargar la última versión del JDK desde el sitio web oficial de Oracle: ",[441,442,443],"a",{"href":443,"rel":444},"https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F",[445],"nofollow",". Sigue las instrucciones de instalación para tu sistema operativo.",[448,449,450],"note",{},[451,452,453,454,458,459,462,463,466],"strong",{},"Asegúrate de configurar la variable de entorno ",[455,456,457],"code",{},"JAVA_HOME"," y agregar el directorio ",[455,460,461],{},"bin"," del JDK a la variable de entorno ",[455,464,465],{},"PATH"," para que puedas ejecutar comandos de Java desde la línea de comandos, este paso es importante para algunos IDE como Eclipse o Visual Studio Code, mientras que para otros como IntelliJ IDEA, este proceso es realizado directamente por el entorno.",[308,468,470],{"id":469},"configurar-el-ide","Configurar el IDE",[304,472,473],{},"A continuación, debemos instalar un IDE para facilitar el desarrollo de nuestras aplicaciones Java. Dos opciones populares son IntelliJ IDEA y Eclipse.",[475,476,477,489],"ul",{},[478,479,480,483,484,488],"li",{},[451,481,482],{},"IntelliJ IDEA",": Podemos descargar la versión Community (gratuita) desde ",[441,485,486],{"href":486,"rel":487},"https:\u002F\u002Fwww.jetbrains.com\u002Fidea\u002Fdownload\u002F",[445],". Sigue las instrucciones de instalación y configuración.",[478,490,491,494,495,488],{},[451,492,493],{},"Eclipse",": Podemos descargar Eclipse IDE para Java Developers desde ",[441,496,497],{"href":497,"rel":498},"https:\u002F\u002Fwww.eclipse.org\u002Fdownloads\u002F",[445],[448,500,501],{},[451,502,503],{},"Ambos IDEs ofrecen características robustas para el desarrollo de Java, incluyendo soporte para Swing, depuración, gestión de proyectos y más. Puedes elegir el que prefieras según tus necesidades y preferencias. Sin embargo, en este curso utilizaremos IntelliJ IDEA para los ejemplos y ejercicios.",[308,505,507],{"id":506},"crear-un-nuevo-proyecto-java","Crear un Nuevo Proyecto Java",[304,509,510],{},"Una vez que tengamos el JDK y el IDE instalados, podemos crear un nuevo proyecto Java. Abre tu IDE y selecciona la opción para crear un nuevo proyecto Java. Asegúrate de configurar el proyecto para utilizar el JDK que instalaste anteriormente.",[304,512,513],{},"Con nuestro entorno de desarrollo configurado, estamos listos para comenzar a construir interfaces gráficas de usuario utilizando Java y Swing. En las siguientes secciones, exploraremos cómo diseñar ventanas, agregar componentes y manejar eventos para crear aplicaciones interactivas.",[308,515,517],{"id":516},"estructura-básica-de-una-aplicación-swing","Estructura Básica de una Aplicación Swing",[304,519,520],{},"Dentro de los IDEs, como IntelliJ IDEA o Eclipse, podemos crear una nueva clase Java para nuestra aplicación Swing. A continuación, se muestra un ejemplo básico de la estructura de una aplicación Swing:",[522,523,529],"pre",{"className":524,"code":525,"filename":526,"language":527,"meta":528,"style":528},"language-java shiki shiki-themes github-dark","import javax.swing.JFrame;\nimport javax.swing.JLabel;\n\npublic class MiAplicacionSwing {\n    \n    void main(String[] args) {\n        \u002F\u002F Crear el marco principal\n        JFrame frame = new JFrame(\"Mi Aplicación Swing\");\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(400, 300);\n\n        \u002F\u002F Crear un componente JLabel\n        JLabel label = new JLabel(\"¡Hola, Swing!\");\n        frame.getContentPane().add(label);\n\n        \u002F\u002F Hacer visible el marco\n        frame.setVisible(true);\n    }\n}\n","MiAplicacionSwing.java","java","",[455,530,531,544,552,559,575,581,606,613,637,649,671,676,682,702,719,724,730,745,751],{"__ignoreMap":528},[532,533,536,540],"span",{"class":534,"line":535},"line",1,[532,537,539],{"class":538},"snl16","import",[532,541,543],{"class":542},"s95oV"," javax.swing.JFrame;\n",[532,545,547,549],{"class":534,"line":546},2,[532,548,539],{"class":538},[532,550,551],{"class":542}," javax.swing.JLabel;\n",[532,553,555],{"class":534,"line":554},3,[532,556,558],{"emptyLinePlaceholder":557},true,"\n",[532,560,562,565,568,572],{"class":534,"line":561},4,[532,563,564],{"class":538},"public",[532,566,567],{"class":538}," class",[532,569,571],{"class":570},"svObZ"," MiAplicacionSwing",[532,573,574],{"class":542}," {\n",[532,576,578],{"class":534,"line":577},5,[532,579,580],{"class":542},"    \n",[532,582,584,587,590,593,596,599,603],{"class":534,"line":583},6,[532,585,586],{"class":538},"    void",[532,588,589],{"class":570}," main",[532,591,592],{"class":542},"(",[532,594,595],{"class":538},"String",[532,597,598],{"class":542},"[] ",[532,600,602],{"class":601},"s9osk","args",[532,604,605],{"class":542},") {\n",[532,607,609],{"class":534,"line":608},7,[532,610,612],{"class":611},"sAwPA","        \u002F\u002F Crear el marco principal\n",[532,614,616,619,622,625,628,630,634],{"class":534,"line":615},8,[532,617,618],{"class":542},"        JFrame frame ",[532,620,621],{"class":538},"=",[532,623,624],{"class":538}," new",[532,626,627],{"class":570}," JFrame",[532,629,592],{"class":542},[532,631,633],{"class":632},"sU2Wk","\"Mi Aplicación Swing\"",[532,635,636],{"class":542},");\n",[532,638,640,643,646],{"class":534,"line":639},9,[532,641,642],{"class":542},"        frame.",[532,644,645],{"class":570},"setDefaultCloseOperation",[532,647,648],{"class":542},"(JFrame.EXIT_ON_CLOSE);\n",[532,650,652,654,657,659,663,666,669],{"class":534,"line":651},10,[532,653,642],{"class":542},[532,655,656],{"class":570},"setSize",[532,658,592],{"class":542},[532,660,662],{"class":661},"sDLfK","400",[532,664,665],{"class":542},", ",[532,667,668],{"class":661},"300",[532,670,636],{"class":542},[532,672,674],{"class":534,"line":673},11,[532,675,558],{"emptyLinePlaceholder":557},[532,677,679],{"class":534,"line":678},12,[532,680,681],{"class":611},"        \u002F\u002F Crear un componente JLabel\n",[532,683,685,688,690,692,695,697,700],{"class":534,"line":684},13,[532,686,687],{"class":542},"        JLabel label ",[532,689,621],{"class":538},[532,691,624],{"class":538},[532,693,694],{"class":570}," JLabel",[532,696,592],{"class":542},[532,698,699],{"class":632},"\"¡Hola, Swing!\"",[532,701,636],{"class":542},[532,703,705,707,710,713,716],{"class":534,"line":704},14,[532,706,642],{"class":542},[532,708,709],{"class":570},"getContentPane",[532,711,712],{"class":542},"().",[532,714,715],{"class":570},"add",[532,717,718],{"class":542},"(label);\n",[532,720,722],{"class":534,"line":721},15,[532,723,558],{"emptyLinePlaceholder":557},[532,725,727],{"class":534,"line":726},16,[532,728,729],{"class":611},"        \u002F\u002F Hacer visible el marco\n",[532,731,733,735,738,740,743],{"class":534,"line":732},17,[532,734,642],{"class":542},[532,736,737],{"class":570},"setVisible",[532,739,592],{"class":542},[532,741,742],{"class":661},"true",[532,744,636],{"class":542},[532,746,748],{"class":534,"line":747},18,[532,749,750],{"class":542},"    }\n",[532,752,754],{"class":534,"line":753},19,[532,755,756],{"class":542},"}\n",[304,758,759,760,763,764,767,768,770,771,774,775,778],{},"En este ejemplo, importamos las clases necesarias de la biblioteca Swing, creamos una clase llamada ",[455,761,762],{},"MiAplicacionSwing"," y definimos el método ",[455,765,766],{},"main",", que es el punto de entrada de la aplicación. Dentro del método ",[455,769,766],{},", creamos un ",[455,772,773],{},"JFrame",", que es la ventana principal de la aplicación, y un ",[455,776,777],{},"JLabel",", que es un componente que muestra texto. Finalmente, hacemos visible el marco para que el usuario pueda interactuar con la aplicación.",[304,780,781],{},"Esta estructura básica nos proporciona un punto de partida para construir aplicaciones GUI más complejas utilizando Swing. En las siguientes secciones, exploraremos cómo agregar más componentes, organizar el diseño y manejar eventos para crear aplicaciones interactivas y funcionales.",[304,783,784],{},"Sin embargo, es importante mencionar que, para muchos IDEs, existen plugins que permiten el diseño visual de las interfaces gráficas, facilitando la creación y disposición de los componentes en la ventana. En el caso de IntelliJ IDEA, podemos utilizar el plugin \"Swing UI Designer\" para diseñar nuestras interfaces de manera visual. Este plugin nos permite arrastrar y soltar componentes en un formulario, configurar sus propiedades y generar automáticamente el código Java correspondiente, lo que agiliza el proceso de desarrollo de aplicaciones GUI. A lo largo del curso, exploraremos cómo utilizar este plugin para crear interfaces gráficas de manera más eficiente.",[304,786,787],{},"Para poder utilizar el plugin \"Swing UI Designer\" en IntelliJ IDEA, sigue estos pasos:",[430,789,790,794,797,801,804,808,811,815],{"level":432},[308,791,793],{"id":792},"instalar-el-plugin-swing-ui-designer","Instalar el Plugin Swing UI Designer",[304,795,796],{},"Abre IntelliJ IDEA y dirígete a \"File\" > \"Settings\" (o \"IntelliJ IDEA\" > \"Preferences\" en macOS). En el panel de configuración, selecciona \"Plugins\" y busca \"Swing UI Designer\". Si no está instalado, haz clic en \"Install\" para agregarlo a tu IDE. Reinicia IntelliJ IDEA si es necesario.",[308,798,800],{"id":799},"crear-un-nuevo-proyecto-con-swing-ui-designer","Crear un Nuevo Proyecto con Swing UI Designer",[304,802,803],{},"Crea un nuevo proyecto Java en IntelliJ IDEA. Asegúrate de seleccionar la opción para incluir soporte para Swing. Una vez creado el proyecto, puedes crear un nuevo formulario Swing seleccionando \"File\" > \"New\" > \"GUI Form\". Esto abrirá el editor visual de Swing UI Designer.",[308,805,807],{"id":806},"diseñar-la-interfaz-gráfica","Diseñar la Interfaz Gráfica",[304,809,810],{},"Utiliza el editor visual para arrastrar y soltar componentes desde la paleta de herramientas a tu formulario. Puedes configurar las propiedades de cada componente, como el texto, tamaño, color, etc., utilizando el panel de propiedades. El editor generará automáticamente el código Java correspondiente en una clase asociada al formulario.",[308,812,814],{"id":813},"generar-y-ejecutar-el-código","Generar y Ejecutar el Código",[304,816,817,818,820],{},"Al trabajar en el editor visual, IntelliJ IDEA generará el código Java necesario para crear la interfaz gráfica. Puedes acceder a este código en la clase asociada al formulario. Para ejecutar la aplicación, simplemente crea una clase con un método ",[455,819,766],{}," que instancie el formulario y lo haga visible.",[304,822,823],{},"Con estos pasos, estarás listo para utilizar el plugin \"Swing UI Designer\" en IntelliJ IDEA para diseñar y desarrollar aplicaciones GUI de manera más eficiente. A lo largo del curso, exploraremos más características y técnicas avanzadas para crear interfaces gráficas atractivas y funcionales utilizando Swing.",[825,826,827],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":528,"searchDepth":546,"depth":546,"links":829},[830,831,832,833,834,835,836,837,838,839,840],{"id":310,"depth":546,"text":311},{"id":323,"depth":546,"text":324},{"id":424,"depth":546,"text":425},{"id":435,"depth":546,"text":436},{"id":469,"depth":546,"text":470},{"id":506,"depth":546,"text":507},{"id":516,"depth":546,"text":517},{"id":792,"depth":546,"text":793},{"id":799,"depth":546,"text":800},{"id":806,"depth":546,"text":807},{"id":813,"depth":546,"text":814},"Aprende a construir interfaces gráficas de usuario (GUI) utilizando Java y Swing para desarrollar aplicaciones interactivas.","md",null,{"editButton":104},{"icon":25},{"title":27,"description":841},"1nOaepsLDt8bEFmRHYAYocnKA28s9KuDtxD-yQuIY8k",[849,851],{"title":24,"path":20,"stem":21,"description":850,"icon":25,"children":-1},"Aprende los conceptos básicos sobre las interfaces gráficas de usuario (GUI) y su importancia en el desarrollo de software.",{"title":31,"path":32,"stem":33,"description":852,"icon":25,"children":-1},"Aprende sobre los componentes básicos de Swing para construir interfaces gráficas en Java.",1775101369087]