[{"data":1,"prerenderedAt":1599},["ShallowReactive",2],{"navigation_docs":3,"-gui-componentes-basicos":298,"-gui-componentes-basicos-surround":1594},[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":31,"body":300,"description":1587,"extension":1588,"links":1589,"meta":1590,"navigation":1591,"path":32,"seo":1592,"stem":33,"__hash__":1593},"docs\u002F2.gui\u002F03.componentes-basicos.md",{"type":301,"value":302,"toc":1576},"minimark",[303,307,312,325,329,337,492,501,505,519,663,675,999,1002,1006,1014,1184,1187,1193,1197,1204,1372,1377,1381,1388,1561,1566,1569,1572],[304,305,306],"p",{},"En esta sección, exploraremos los componentes básicos de Swing que utilizaremos para construir interfaces gráficas en Java. Swing ofrece una amplia variedad de componentes que nos permiten crear aplicaciones interactivas y atractivas. A continuación, se describen algunos de los componentes más comunes y su uso.",[308,309,311],"h2",{"id":310},"jcomponent","JComponent",[304,313,314,315,318,319,321,322,324],{},"La clase ",[316,317,311],"code",{}," es la clase base para todos los componentes de Swing. Todos los componentes visuales de Swing, como botones, etiquetas, campos de texto, etc., heredan de ",[316,320,311],{},". Esta clase proporciona métodos para personalizar la apariencia y el comportamiento de los componentes, como establecer colores, fuentes, bordes, entre otros. Aunque no se utiliza directamente para crear componentes, es importante entender que todos los componentes de Swing son subclases de ",[316,323,311],{},".",[308,326,328],{"id":327},"jframe","JFrame",[304,330,314,331,333,334,336],{},[316,332,328],{}," es la ventana principal de una aplicación Swing. Es el contenedor que alberga todos los demás componentes de la interfaz gráfica. Podemos crear un ",[316,335,328],{}," utilizando el siguiente código:",[338,339,344],"pre",{"className":340,"code":341,"language":342,"meta":343,"style":343},"language-java shiki shiki-themes github-dark","import javax.swing.JFrame;\n\npublic class MyFrame {\n    void main(String[] args) {\n        JFrame frame = new JFrame(\"Mi Primera Ventana\");\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n","java","",[316,345,346,359,366,382,407,431,454,465,480,486],{"__ignoreMap":343},[347,348,351,355],"span",{"class":349,"line":350},"line",1,[347,352,354],{"class":353},"snl16","import",[347,356,358],{"class":357},"s95oV"," javax.swing.JFrame;\n",[347,360,362],{"class":349,"line":361},2,[347,363,365],{"emptyLinePlaceholder":364},true,"\n",[347,367,369,372,375,379],{"class":349,"line":368},3,[347,370,371],{"class":353},"public",[347,373,374],{"class":353}," class",[347,376,378],{"class":377},"svObZ"," MyFrame",[347,380,381],{"class":357}," {\n",[347,383,385,388,391,394,397,400,404],{"class":349,"line":384},4,[347,386,387],{"class":353},"    void",[347,389,390],{"class":377}," main",[347,392,393],{"class":357},"(",[347,395,396],{"class":353},"String",[347,398,399],{"class":357},"[] ",[347,401,403],{"class":402},"s9osk","args",[347,405,406],{"class":357},") {\n",[347,408,410,413,416,419,422,424,428],{"class":349,"line":409},5,[347,411,412],{"class":357},"        JFrame frame ",[347,414,415],{"class":353},"=",[347,417,418],{"class":353}," new",[347,420,421],{"class":377}," JFrame",[347,423,393],{"class":357},[347,425,427],{"class":426},"sU2Wk","\"Mi Primera Ventana\"",[347,429,430],{"class":357},");\n",[347,432,434,437,440,442,446,449,452],{"class":349,"line":433},6,[347,435,436],{"class":357},"        frame.",[347,438,439],{"class":377},"setSize",[347,441,393],{"class":357},[347,443,445],{"class":444},"sDLfK","400",[347,447,448],{"class":357},", ",[347,450,451],{"class":444},"300",[347,453,430],{"class":357},[347,455,457,459,462],{"class":349,"line":456},7,[347,458,436],{"class":357},[347,460,461],{"class":377},"setDefaultCloseOperation",[347,463,464],{"class":357},"(JFrame.EXIT_ON_CLOSE);\n",[347,466,468,470,473,475,478],{"class":349,"line":467},8,[347,469,436],{"class":357},[347,471,472],{"class":377},"setVisible",[347,474,393],{"class":357},[347,476,477],{"class":444},"true",[347,479,430],{"class":357},[347,481,483],{"class":349,"line":482},9,[347,484,485],{"class":357},"    }\n",[347,487,489],{"class":349,"line":488},10,[347,490,491],{"class":357},"}\n",[304,493,494,495,497,498,500],{},"Dentro del ",[316,496,328],{},", podemos agregar otros componentes para construir nuestra interfaz, este componente no existe en la paleta de componentes, ya que es el contenedor principal, sin embargo, es imperativo conocer su funcionamiento, ya que todos los demás componentes deben ser añadidos a un ",[316,499,328],{}," o a otros contenedores.",[308,502,504],{"id":503},"jpanel","JPanel",[304,506,314,507,509,510,512,513,515,516,518],{},[316,508,504],{}," es un contenedor que nos permite agrupar otros componentes dentro de un ",[316,511,328],{},". Podemos utilizar ",[316,514,504],{}," para organizar la disposición de los componentes en nuestra interfaz gráfica. Aquí hay un ejemplo de cómo usar ",[316,517,504],{},":",[338,520,522],{"className":340,"code":521,"language":342,"meta":343,"style":343},"import javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class MyPanel {\n    void main(String[] args) {\n        JFrame frame = new JFrame(\"Ventana con Panel\");\n        JPanel panel = new JPanel();\n        \n        frame.add(panel);\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,523,524,530,537,541,552,568,585,600,605,615,631,640,653,658],{"__ignoreMap":343},[347,525,526,528],{"class":349,"line":350},[347,527,354],{"class":353},[347,529,358],{"class":357},[347,531,532,534],{"class":349,"line":361},[347,533,354],{"class":353},[347,535,536],{"class":357}," javax.swing.JPanel;\n",[347,538,539],{"class":349,"line":368},[347,540,365],{"emptyLinePlaceholder":364},[347,542,543,545,547,550],{"class":349,"line":384},[347,544,371],{"class":353},[347,546,374],{"class":353},[347,548,549],{"class":377}," MyPanel",[347,551,381],{"class":357},[347,553,554,556,558,560,562,564,566],{"class":349,"line":409},[347,555,387],{"class":353},[347,557,390],{"class":377},[347,559,393],{"class":357},[347,561,396],{"class":353},[347,563,399],{"class":357},[347,565,403],{"class":402},[347,567,406],{"class":357},[347,569,570,572,574,576,578,580,583],{"class":349,"line":433},[347,571,412],{"class":357},[347,573,415],{"class":353},[347,575,418],{"class":353},[347,577,421],{"class":377},[347,579,393],{"class":357},[347,581,582],{"class":426},"\"Ventana con Panel\"",[347,584,430],{"class":357},[347,586,587,590,592,594,597],{"class":349,"line":456},[347,588,589],{"class":357},"        JPanel panel ",[347,591,415],{"class":353},[347,593,418],{"class":353},[347,595,596],{"class":377}," JPanel",[347,598,599],{"class":357},"();\n",[347,601,602],{"class":349,"line":467},[347,603,604],{"class":357},"        \n",[347,606,607,609,612],{"class":349,"line":482},[347,608,436],{"class":357},[347,610,611],{"class":377},"add",[347,613,614],{"class":357},"(panel);\n",[347,616,617,619,621,623,625,627,629],{"class":349,"line":488},[347,618,436],{"class":357},[347,620,439],{"class":377},[347,622,393],{"class":357},[347,624,445],{"class":444},[347,626,448],{"class":357},[347,628,451],{"class":444},[347,630,430],{"class":357},[347,632,634,636,638],{"class":349,"line":633},11,[347,635,436],{"class":357},[347,637,461],{"class":377},[347,639,464],{"class":357},[347,641,643,645,647,649,651],{"class":349,"line":642},12,[347,644,436],{"class":357},[347,646,472],{"class":377},[347,648,393],{"class":357},[347,650,477],{"class":444},[347,652,430],{"class":357},[347,654,656],{"class":349,"line":655},13,[347,657,485],{"class":357},[347,659,661],{"class":349,"line":660},14,[347,662,491],{"class":357},[304,664,665,666,668,669,671,672,674],{},"Como dato importante, los ",[316,667,504],{}," son componentes que sí se encuentran en la paleta de componentes del plugin \"Swing UI Designer\" en IntelliJ IDEA, lo que facilita su uso para organizar otros componentes visualmente, además de que al crear un nuevo formulario, este se crea como un ",[316,670,504],{}," por defecto que puedes luego añadir a un ",[316,673,328],{}," de la siguiente manera:",[676,677,679,683,686,692,695,699,714,719,735,740,748,752,761,806,828,987],"steps",{"level":678},"2",[308,680,682],{"id":681},"crea-un-nuevo-formulario","Crea un Nuevo Formulario",[304,684,685],{},"En un proyecto Java en IntelliJ IDEA, selecciona \"File\" > \"New\" > \"Swing UI Form\". Esto abrirá una ventana para crear un nuevo formulario Swing.",[304,687,688],{},[689,690],"img",{"alt":691,"src":691},"new-swing.png",[304,693,694],{},"Es importante que se seleccione la opción \"Create bound class\" para que se genere automáticamente la clase Java asociada al formulario.",[308,696,698],{"id":697},"nombrando-el-panel","Nombrando el Panel",[304,700,701,702,705,706,708,709,711,712,324],{},"Al crear el formulario, se generará un archivo ",[316,703,704],{},".form"," y una clase Java asociada. Primero trabajaremos en el archivo ",[316,707,704],{},", que representa un ",[316,710,504],{}," que aún no tiene componentes, nombre y tampoco está asociado a un ",[316,713,328],{},[304,715,716],{},[689,717],{"alt":718,"src":718},"swing-ui.png",[304,720,721,722,725,726,728,729,731,732,324],{},"Como puedes notar en la imagen, el formulario se llama está vinculado a una clase, en este caso ",[316,723,724],{},"MyApp",", pero él ",[316,727,504],{}," dentro del formulario no tiene un nombre específico. Para asignarle un nombre, selecciona él ",[316,730,504],{}," y en la sección de propiedades (a la derecha), busca la propiedad \"field name\" y asígnale un nombre, por ejemplo, ",[316,733,734],{},"mainPanel",[304,736,737],{},[689,738],{"alt":739,"src":739},"swing-panel.png",[304,741,742,743,745,746,324],{},"Una vez que hayas nombrado podemos pasar a la clase Java para añadir el ",[316,744,504],{}," a un ",[316,747,328],{},[308,749,751],{"id":750},"añadiendo-el-jpanel-a-un-jframe","Añadiendo el JPanel a un JFrame",[304,753,754,755,757,758,760],{},"Si ahora damos doble clic en la clase Java vinculada al formulario, podemos ver el código generado automáticamente y si hemos seguido los pasos anteriores, podemos ver que el ",[316,756,504],{}," tiene el nombre que le asignamos, en este caso ",[316,759,734],{},", de esta forma:",[338,762,764],{"className":340,"code":763,"language":342,"meta":343,"style":343},"import javax.swing.*;\n\npublic class MyApp {\n    private JPanel mainPanel;\n}\n",[316,765,766,779,783,794,802],{"__ignoreMap":343},[347,767,768,770,773,776],{"class":349,"line":350},[347,769,354],{"class":353},[347,771,772],{"class":357}," javax.swing.",[347,774,775],{"class":444},"*",[347,777,778],{"class":357},";\n",[347,780,781],{"class":349,"line":361},[347,782,365],{"emptyLinePlaceholder":364},[347,784,785,787,789,792],{"class":349,"line":368},[347,786,371],{"class":353},[347,788,374],{"class":353},[347,790,791],{"class":377}," MyApp",[347,793,381],{"class":357},[347,795,796,799],{"class":349,"line":384},[347,797,798],{"class":353},"    private",[347,800,801],{"class":357}," JPanel mainPanel;\n",[347,803,804],{"class":349,"line":409},[347,805,491],{"class":357},[304,807,808,809,811,812,814,815,817,818,821,822,824,825,827],{},"Para mostrar este ",[316,810,504],{}," dentro de un ",[316,813,328],{},", podemos crear un nuevo ",[316,816,328],{}," en el método ",[316,819,820],{},"main"," de la clase Java y añadir el ",[316,823,734],{}," al ",[316,826,328],{},", de la siguiente manera:",[338,829,831],{"className":340,"code":830,"language":342,"meta":343,"style":343},"import javax.swing.*;\n\npublic class MyApp {\n    private JPanel mainPanel;\n\n    void main() {\n        SwingUtilities.invokeLater(() -> {\n            JFrame frame = new JFrame(\"My Application\");\n            frame.setContentPane(mainPanel);\n            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n            frame.setSize(400,400);\n            frame.setLocationRelativeTo(null);\n            frame.setVisible(true);\n        });\n    }\n}\n",[316,832,833,843,847,857,863,867,876,892,910,921,929,946,960,972,977,982],{"__ignoreMap":343},[347,834,835,837,839,841],{"class":349,"line":350},[347,836,354],{"class":353},[347,838,772],{"class":357},[347,840,775],{"class":444},[347,842,778],{"class":357},[347,844,845],{"class":349,"line":361},[347,846,365],{"emptyLinePlaceholder":364},[347,848,849,851,853,855],{"class":349,"line":368},[347,850,371],{"class":353},[347,852,374],{"class":353},[347,854,791],{"class":377},[347,856,381],{"class":357},[347,858,859,861],{"class":349,"line":384},[347,860,798],{"class":353},[347,862,801],{"class":357},[347,864,865],{"class":349,"line":409},[347,866,365],{"emptyLinePlaceholder":364},[347,868,869,871,873],{"class":349,"line":433},[347,870,387],{"class":353},[347,872,390],{"class":377},[347,874,875],{"class":357},"() {\n",[347,877,878,881,884,887,890],{"class":349,"line":456},[347,879,880],{"class":357},"        SwingUtilities.",[347,882,883],{"class":377},"invokeLater",[347,885,886],{"class":357},"(() ",[347,888,889],{"class":353},"->",[347,891,381],{"class":357},[347,893,894,897,899,901,903,905,908],{"class":349,"line":467},[347,895,896],{"class":357},"            JFrame frame ",[347,898,415],{"class":353},[347,900,418],{"class":353},[347,902,421],{"class":377},[347,904,393],{"class":357},[347,906,907],{"class":426},"\"My Application\"",[347,909,430],{"class":357},[347,911,912,915,918],{"class":349,"line":482},[347,913,914],{"class":357},"            frame.",[347,916,917],{"class":377},"setContentPane",[347,919,920],{"class":357},"(mainPanel);\n",[347,922,923,925,927],{"class":349,"line":488},[347,924,914],{"class":357},[347,926,461],{"class":377},[347,928,464],{"class":357},[347,930,931,933,935,937,939,942,944],{"class":349,"line":633},[347,932,914],{"class":357},[347,934,439],{"class":377},[347,936,393],{"class":357},[347,938,445],{"class":444},[347,940,941],{"class":357},",",[347,943,445],{"class":444},[347,945,430],{"class":357},[347,947,948,950,953,955,958],{"class":349,"line":642},[347,949,914],{"class":357},[347,951,952],{"class":377},"setLocationRelativeTo",[347,954,393],{"class":357},[347,956,957],{"class":444},"null",[347,959,430],{"class":357},[347,961,962,964,966,968,970],{"class":349,"line":655},[347,963,914],{"class":357},[347,965,472],{"class":377},[347,967,393],{"class":357},[347,969,477],{"class":444},[347,971,430],{"class":357},[347,973,974],{"class":349,"line":660},[347,975,976],{"class":357},"        });\n",[347,978,980],{"class":349,"line":979},15,[347,981,485],{"class":357},[347,983,985],{"class":349,"line":984},16,[347,986,491],{"class":357},[304,988,989,990,992,993,995,996,998],{},"Con estos pasos, hemos creado un ",[316,991,504],{}," utilizando el plugin \"Swing UI Designer\" en IntelliJ IDEA y lo hemos añadido a un ",[316,994,328],{}," para mostrarlo como una ventana de nuestra aplicación Swing. Ahora podemos comenzar a agregar otros componentes al ",[316,997,504],{}," para construir nuestra interfaz gráfica.",[304,1000,1001],{},"Más adelante exploraremos cada una de estas líneas de código en detalle, pero por ahora, este es un vistazo general de los componentes básicos de Swing que utilizaremos para construir nuestras interfaces gráficas en Java.",[308,1003,1005],{"id":1004},"jbutton","JButton",[304,1007,1008,1009,1011,1012,674],{},"El ",[316,1010,1005],{}," es un componente que representa un botón en la interfaz gráfica. Podemos crear un botón y agregarlo a un ",[316,1013,504],{},[338,1015,1017],{"className":340,"code":1016,"language":342,"meta":343,"style":343},"import javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class MyButton {\n    void main(String[] args) {\n        JFrame frame = new JFrame(\"Ventana con Botón\");\n        JPanel panel = new JPanel();\n        JButton button = new JButton(\"Haz Clic Aquí\");\n        \n        panel.add(button);\n        frame.add(panel);\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,1018,1019,1026,1032,1038,1042,1053,1069,1086,1098,1117,1121,1131,1139,1155,1163,1175,1179],{"__ignoreMap":343},[347,1020,1021,1023],{"class":349,"line":350},[347,1022,354],{"class":353},[347,1024,1025],{"class":357}," javax.swing.JButton;\n",[347,1027,1028,1030],{"class":349,"line":361},[347,1029,354],{"class":353},[347,1031,358],{"class":357},[347,1033,1034,1036],{"class":349,"line":368},[347,1035,354],{"class":353},[347,1037,536],{"class":357},[347,1039,1040],{"class":349,"line":384},[347,1041,365],{"emptyLinePlaceholder":364},[347,1043,1044,1046,1048,1051],{"class":349,"line":409},[347,1045,371],{"class":353},[347,1047,374],{"class":353},[347,1049,1050],{"class":377}," MyButton",[347,1052,381],{"class":357},[347,1054,1055,1057,1059,1061,1063,1065,1067],{"class":349,"line":433},[347,1056,387],{"class":353},[347,1058,390],{"class":377},[347,1060,393],{"class":357},[347,1062,396],{"class":353},[347,1064,399],{"class":357},[347,1066,403],{"class":402},[347,1068,406],{"class":357},[347,1070,1071,1073,1075,1077,1079,1081,1084],{"class":349,"line":456},[347,1072,412],{"class":357},[347,1074,415],{"class":353},[347,1076,418],{"class":353},[347,1078,421],{"class":377},[347,1080,393],{"class":357},[347,1082,1083],{"class":426},"\"Ventana con Botón\"",[347,1085,430],{"class":357},[347,1087,1088,1090,1092,1094,1096],{"class":349,"line":467},[347,1089,589],{"class":357},[347,1091,415],{"class":353},[347,1093,418],{"class":353},[347,1095,596],{"class":377},[347,1097,599],{"class":357},[347,1099,1100,1103,1105,1107,1110,1112,1115],{"class":349,"line":482},[347,1101,1102],{"class":357},"        JButton button ",[347,1104,415],{"class":353},[347,1106,418],{"class":353},[347,1108,1109],{"class":377}," JButton",[347,1111,393],{"class":357},[347,1113,1114],{"class":426},"\"Haz Clic Aquí\"",[347,1116,430],{"class":357},[347,1118,1119],{"class":349,"line":488},[347,1120,604],{"class":357},[347,1122,1123,1126,1128],{"class":349,"line":633},[347,1124,1125],{"class":357},"        panel.",[347,1127,611],{"class":377},[347,1129,1130],{"class":357},"(button);\n",[347,1132,1133,1135,1137],{"class":349,"line":642},[347,1134,436],{"class":357},[347,1136,611],{"class":377},[347,1138,614],{"class":357},[347,1140,1141,1143,1145,1147,1149,1151,1153],{"class":349,"line":655},[347,1142,436],{"class":357},[347,1144,439],{"class":377},[347,1146,393],{"class":357},[347,1148,445],{"class":444},[347,1150,448],{"class":357},[347,1152,451],{"class":444},[347,1154,430],{"class":357},[347,1156,1157,1159,1161],{"class":349,"line":660},[347,1158,436],{"class":357},[347,1160,461],{"class":377},[347,1162,464],{"class":357},[347,1164,1165,1167,1169,1171,1173],{"class":349,"line":979},[347,1166,436],{"class":357},[347,1168,472],{"class":377},[347,1170,393],{"class":357},[347,1172,477],{"class":444},[347,1174,430],{"class":357},[347,1176,1177],{"class":349,"line":984},[347,1178,485],{"class":357},[347,1180,1182],{"class":349,"line":1181},17,[347,1183,491],{"class":357},[304,1185,1186],{},"Toma en cuenta que el botón no realizará ninguna acción al hacer clic en él, ya que aún no hemos agregado un listener de eventos. Más adelante aprenderemos cómo manejar eventos en Swing.",[304,1188,1189,1190,1192],{},"Así mismo, él ",[316,1191,1005],{}," es un componente que se encuentra en la paleta de componentes del plugin \"Swing UI Designer\" en IntelliJ IDEA, lo que facilita su uso para agregar botones a nuestras interfaces gráficas de manera visual.",[308,1194,1196],{"id":1195},"jlabel","JLabel",[304,1198,1008,1199,1201,1202,674],{},[316,1200,1196],{}," es un componente que se utiliza para mostrar texto o imágenes en la interfaz gráfica. Podemos crear una etiqueta y agregarla a un ",[316,1203,504],{},[338,1205,1207],{"className":340,"code":1206,"language":342,"meta":343,"style":343},"import javax.swing.JLabel;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class MyLabel {\n    void main(String[] args) {\n        JFrame frame = new JFrame(\"Ventana con Etiqueta\");\n        JPanel panel = new JPanel();\n        JLabel label = new JLabel(\"¡Hola, Mundo!\");\n        \n        panel.add(label);\n        frame.add(panel);\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,1208,1209,1216,1222,1228,1232,1243,1259,1276,1288,1307,1311,1320,1328,1344,1352,1364,1368],{"__ignoreMap":343},[347,1210,1211,1213],{"class":349,"line":350},[347,1212,354],{"class":353},[347,1214,1215],{"class":357}," javax.swing.JLabel;\n",[347,1217,1218,1220],{"class":349,"line":361},[347,1219,354],{"class":353},[347,1221,358],{"class":357},[347,1223,1224,1226],{"class":349,"line":368},[347,1225,354],{"class":353},[347,1227,536],{"class":357},[347,1229,1230],{"class":349,"line":384},[347,1231,365],{"emptyLinePlaceholder":364},[347,1233,1234,1236,1238,1241],{"class":349,"line":409},[347,1235,371],{"class":353},[347,1237,374],{"class":353},[347,1239,1240],{"class":377}," MyLabel",[347,1242,381],{"class":357},[347,1244,1245,1247,1249,1251,1253,1255,1257],{"class":349,"line":433},[347,1246,387],{"class":353},[347,1248,390],{"class":377},[347,1250,393],{"class":357},[347,1252,396],{"class":353},[347,1254,399],{"class":357},[347,1256,403],{"class":402},[347,1258,406],{"class":357},[347,1260,1261,1263,1265,1267,1269,1271,1274],{"class":349,"line":456},[347,1262,412],{"class":357},[347,1264,415],{"class":353},[347,1266,418],{"class":353},[347,1268,421],{"class":377},[347,1270,393],{"class":357},[347,1272,1273],{"class":426},"\"Ventana con Etiqueta\"",[347,1275,430],{"class":357},[347,1277,1278,1280,1282,1284,1286],{"class":349,"line":467},[347,1279,589],{"class":357},[347,1281,415],{"class":353},[347,1283,418],{"class":353},[347,1285,596],{"class":377},[347,1287,599],{"class":357},[347,1289,1290,1293,1295,1297,1300,1302,1305],{"class":349,"line":482},[347,1291,1292],{"class":357},"        JLabel label ",[347,1294,415],{"class":353},[347,1296,418],{"class":353},[347,1298,1299],{"class":377}," JLabel",[347,1301,393],{"class":357},[347,1303,1304],{"class":426},"\"¡Hola, Mundo!\"",[347,1306,430],{"class":357},[347,1308,1309],{"class":349,"line":488},[347,1310,604],{"class":357},[347,1312,1313,1315,1317],{"class":349,"line":633},[347,1314,1125],{"class":357},[347,1316,611],{"class":377},[347,1318,1319],{"class":357},"(label);\n",[347,1321,1322,1324,1326],{"class":349,"line":642},[347,1323,436],{"class":357},[347,1325,611],{"class":377},[347,1327,614],{"class":357},[347,1329,1330,1332,1334,1336,1338,1340,1342],{"class":349,"line":655},[347,1331,436],{"class":357},[347,1333,439],{"class":377},[347,1335,393],{"class":357},[347,1337,445],{"class":444},[347,1339,448],{"class":357},[347,1341,451],{"class":444},[347,1343,430],{"class":357},[347,1345,1346,1348,1350],{"class":349,"line":660},[347,1347,436],{"class":357},[347,1349,461],{"class":377},[347,1351,464],{"class":357},[347,1353,1354,1356,1358,1360,1362],{"class":349,"line":979},[347,1355,436],{"class":357},[347,1357,472],{"class":377},[347,1359,393],{"class":357},[347,1361,477],{"class":444},[347,1363,430],{"class":357},[347,1365,1366],{"class":349,"line":984},[347,1367,485],{"class":357},[347,1369,1370],{"class":349,"line":1181},[347,1371,491],{"class":357},[304,1373,1008,1374,1376],{},[316,1375,1196],{}," también está disponible en la paleta de componentes del plugin \"Swing UI Designer\" en IntelliJ IDEA, lo que facilita su uso para agregar etiquetas a nuestras interfaces gráficas de manera visual.",[308,1378,1380],{"id":1379},"jtextfield","JTextField",[304,1382,1008,1383,1385,1386,674],{},[316,1384,1380],{}," es un componente que permite al usuario ingresar texto en la interfaz gráfica. Podemos crear un campo de texto y agregarlo a un ",[316,1387,504],{},[338,1389,1391],{"className":340,"code":1390,"language":342,"meta":343,"style":343},"import javax.swing.JTextField;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class MyTextField {\n    void main(String[] args) {\n        JFrame frame = new JFrame(\"Ventana con Campo de Texto\");\n        JPanel panel = new JPanel();\n        JTextField textField = new JTextField(20); \u002F\u002F 20 columnas\n        \n        panel.add(textField);\n        frame.add(panel);\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,1392,1393,1400,1406,1412,1416,1427,1443,1460,1472,1496,1500,1509,1517,1533,1541,1553,1557],{"__ignoreMap":343},[347,1394,1395,1397],{"class":349,"line":350},[347,1396,354],{"class":353},[347,1398,1399],{"class":357}," javax.swing.JTextField;\n",[347,1401,1402,1404],{"class":349,"line":361},[347,1403,354],{"class":353},[347,1405,358],{"class":357},[347,1407,1408,1410],{"class":349,"line":368},[347,1409,354],{"class":353},[347,1411,536],{"class":357},[347,1413,1414],{"class":349,"line":384},[347,1415,365],{"emptyLinePlaceholder":364},[347,1417,1418,1420,1422,1425],{"class":349,"line":409},[347,1419,371],{"class":353},[347,1421,374],{"class":353},[347,1423,1424],{"class":377}," MyTextField",[347,1426,381],{"class":357},[347,1428,1429,1431,1433,1435,1437,1439,1441],{"class":349,"line":433},[347,1430,387],{"class":353},[347,1432,390],{"class":377},[347,1434,393],{"class":357},[347,1436,396],{"class":353},[347,1438,399],{"class":357},[347,1440,403],{"class":402},[347,1442,406],{"class":357},[347,1444,1445,1447,1449,1451,1453,1455,1458],{"class":349,"line":456},[347,1446,412],{"class":357},[347,1448,415],{"class":353},[347,1450,418],{"class":353},[347,1452,421],{"class":377},[347,1454,393],{"class":357},[347,1456,1457],{"class":426},"\"Ventana con Campo de Texto\"",[347,1459,430],{"class":357},[347,1461,1462,1464,1466,1468,1470],{"class":349,"line":467},[347,1463,589],{"class":357},[347,1465,415],{"class":353},[347,1467,418],{"class":353},[347,1469,596],{"class":377},[347,1471,599],{"class":357},[347,1473,1474,1477,1479,1481,1484,1486,1489,1492],{"class":349,"line":482},[347,1475,1476],{"class":357},"        JTextField textField ",[347,1478,415],{"class":353},[347,1480,418],{"class":353},[347,1482,1483],{"class":377}," JTextField",[347,1485,393],{"class":357},[347,1487,1488],{"class":444},"20",[347,1490,1491],{"class":357},"); ",[347,1493,1495],{"class":1494},"sAwPA","\u002F\u002F 20 columnas\n",[347,1497,1498],{"class":349,"line":488},[347,1499,604],{"class":357},[347,1501,1502,1504,1506],{"class":349,"line":633},[347,1503,1125],{"class":357},[347,1505,611],{"class":377},[347,1507,1508],{"class":357},"(textField);\n",[347,1510,1511,1513,1515],{"class":349,"line":642},[347,1512,436],{"class":357},[347,1514,611],{"class":377},[347,1516,614],{"class":357},[347,1518,1519,1521,1523,1525,1527,1529,1531],{"class":349,"line":655},[347,1520,436],{"class":357},[347,1522,439],{"class":377},[347,1524,393],{"class":357},[347,1526,445],{"class":444},[347,1528,448],{"class":357},[347,1530,451],{"class":444},[347,1532,430],{"class":357},[347,1534,1535,1537,1539],{"class":349,"line":660},[347,1536,436],{"class":357},[347,1538,461],{"class":377},[347,1540,464],{"class":357},[347,1542,1543,1545,1547,1549,1551],{"class":349,"line":979},[347,1544,436],{"class":357},[347,1546,472],{"class":377},[347,1548,393],{"class":357},[347,1550,477],{"class":444},[347,1552,430],{"class":357},[347,1554,1555],{"class":349,"line":984},[347,1556,485],{"class":357},[347,1558,1559],{"class":349,"line":1181},[347,1560,491],{"class":357},[304,1562,1008,1563,1565],{},[316,1564,1380],{}," también está disponible en la paleta de componentes del plugin \"Swing UI Designer\" en IntelliJ IDEA, lo que facilita su uso para agregar campos de texto a nuestras interfaces gráficas de manera visual.",[304,1567,1568],{},"Estos son solo algunos de los componentes básicos de Swing que utilizaremos para construir nuestras interfaces gráficas en Java. A medida que avancemos en el curso, exploraremos más componentes y aprenderemos cómo personalizarlos y manejarlos para crear aplicaciones interactivas y atractivas.",[304,1570,1571],{},"En las siguientes secciones, profundizaremos en cada uno de estos componentes y aprenderemos cómo utilizarlos de manera efectiva en nuestras aplicaciones Swing.",[1573,1574,1575],"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 .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);}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":343,"searchDepth":361,"depth":361,"links":1577},[1578,1579,1580,1581,1582,1583,1584,1585,1586],{"id":310,"depth":361,"text":311},{"id":327,"depth":361,"text":328},{"id":503,"depth":361,"text":504},{"id":681,"depth":361,"text":682},{"id":697,"depth":361,"text":698},{"id":750,"depth":361,"text":751},{"id":1004,"depth":361,"text":1005},{"id":1195,"depth":361,"text":1196},{"id":1379,"depth":361,"text":1380},"Aprende sobre los componentes básicos de Swing para construir interfaces gráficas en Java.","md",null,{"editButton":104},{"icon":25},{"title":31,"description":1587},"B1PwxQddzzlXjoLHVQhcLMIeqe2-hDVC0pWJAT03sa8",[1595,1597],{"title":27,"path":28,"stem":29,"description":1596,"icon":25,"children":-1},"Aprende a construir interfaces gráficas de usuario (GUI) utilizando Java y Swing para desarrollar aplicaciones interactivas.",{"title":35,"path":36,"stem":37,"description":1598,"children":-1},"Aprende a usar el componente JFrame en Java Swing para crear ventanas en aplicaciones gráficas.",1775101369417]