[{"data":1,"prerenderedAt":1174},["ShallowReactive",2],{"navigation_docs":3,"-gui-layout":298,"-gui-layout-surround":1169},[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":67,"body":300,"description":1162,"extension":1163,"links":1164,"meta":1165,"navigation":1166,"path":68,"seo":1167,"stem":69,"__hash__":1168},"docs\u002F2.gui\u002F12.layout.md",{"type":301,"value":302,"toc":1154},"minimark",[303,321,326,336,550,554,562,667,671,676,834,838,843,933,937,942,1128,1131,1135,1150],[304,305,306,307,311,312,316,317,320],"p",{},"En esta sección, exploraremos los diferentes tipos de ",[308,309,310],"strong",{},"layouts"," en Java Swing. Un layout es un administrador de diseño que se encarga de organizar los componentes dentro de un contenedor, como un ",[313,314,315],"code",{},"JFrame"," o un ",[313,318,319],{},"JPanel",". Swing proporciona varios tipos de layouts predefinidos que puedes utilizar para organizar tus componentes de manera efectiva.",[322,323,325],"h2",{"id":324},"borderlayout","BorderLayout",[304,327,328,329,331,332,335],{},"El ",[313,330,325],{}," es uno de los layouts más comunes en Swing. Divide el contenedor en cinco regiones: Norte, Sur, Este, Oeste y Centro. Puedes agregar componentes a cada una de estas regiones utilizando el método ",[313,333,334],{},"add()"," con la posición correspondiente. Por ejemplo:",[337,338,343],"pre",{"className":339,"code":340,"language":341,"meta":342,"style":342},"language-java shiki shiki-themes github-dark","JFrame frame = new JFrame(\"BorderLayout Example\");\nframe.setLayout(new BorderLayout());\nframe.add(new JButton(\"Norte\"), BorderLayout.NORTH);\nframe.add(new JButton(\"Sur\"), BorderLayout.SOUTH);\nframe.add(new JButton(\"Este\"), BorderLayout.EAST);\nframe.add(new JButton(\"Oeste\"), BorderLayout.WEST);\nframe.add(new JButton(\"Centro\"), BorderLayout.CENTER);\nframe.setSize(400, 300);\nframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\nframe.setVisible(true);\n","java","",[313,344,345,375,395,418,439,460,481,502,524,535],{"__ignoreMap":342},[346,347,350,354,358,361,365,368,372],"span",{"class":348,"line":349},"line",1,[346,351,353],{"class":352},"s95oV","JFrame frame ",[346,355,357],{"class":356},"snl16","=",[346,359,360],{"class":356}," new",[346,362,364],{"class":363},"svObZ"," JFrame",[346,366,367],{"class":352},"(",[346,369,371],{"class":370},"sU2Wk","\"BorderLayout Example\"",[346,373,374],{"class":352},");\n",[346,376,378,381,384,386,389,392],{"class":348,"line":377},2,[346,379,380],{"class":352},"frame.",[346,382,383],{"class":363},"setLayout",[346,385,367],{"class":352},[346,387,388],{"class":356},"new",[346,390,391],{"class":363}," BorderLayout",[346,393,394],{"class":352},"());\n",[346,396,398,400,403,405,407,410,412,415],{"class":348,"line":397},3,[346,399,380],{"class":352},[346,401,402],{"class":363},"add",[346,404,367],{"class":352},[346,406,388],{"class":356},[346,408,409],{"class":363}," JButton",[346,411,367],{"class":352},[346,413,414],{"class":370},"\"Norte\"",[346,416,417],{"class":352},"), BorderLayout.NORTH);\n",[346,419,421,423,425,427,429,431,433,436],{"class":348,"line":420},4,[346,422,380],{"class":352},[346,424,402],{"class":363},[346,426,367],{"class":352},[346,428,388],{"class":356},[346,430,409],{"class":363},[346,432,367],{"class":352},[346,434,435],{"class":370},"\"Sur\"",[346,437,438],{"class":352},"), BorderLayout.SOUTH);\n",[346,440,442,444,446,448,450,452,454,457],{"class":348,"line":441},5,[346,443,380],{"class":352},[346,445,402],{"class":363},[346,447,367],{"class":352},[346,449,388],{"class":356},[346,451,409],{"class":363},[346,453,367],{"class":352},[346,455,456],{"class":370},"\"Este\"",[346,458,459],{"class":352},"), BorderLayout.EAST);\n",[346,461,463,465,467,469,471,473,475,478],{"class":348,"line":462},6,[346,464,380],{"class":352},[346,466,402],{"class":363},[346,468,367],{"class":352},[346,470,388],{"class":356},[346,472,409],{"class":363},[346,474,367],{"class":352},[346,476,477],{"class":370},"\"Oeste\"",[346,479,480],{"class":352},"), BorderLayout.WEST);\n",[346,482,484,486,488,490,492,494,496,499],{"class":348,"line":483},7,[346,485,380],{"class":352},[346,487,402],{"class":363},[346,489,367],{"class":352},[346,491,388],{"class":356},[346,493,409],{"class":363},[346,495,367],{"class":352},[346,497,498],{"class":370},"\"Centro\"",[346,500,501],{"class":352},"), BorderLayout.CENTER);\n",[346,503,505,507,510,512,516,519,522],{"class":348,"line":504},8,[346,506,380],{"class":352},[346,508,509],{"class":363},"setSize",[346,511,367],{"class":352},[346,513,515],{"class":514},"sDLfK","400",[346,517,518],{"class":352},", ",[346,520,521],{"class":514},"300",[346,523,374],{"class":352},[346,525,527,529,532],{"class":348,"line":526},9,[346,528,380],{"class":352},[346,530,531],{"class":363},"setDefaultCloseOperation",[346,533,534],{"class":352},"(JFrame.EXIT_ON_CLOSE);\n",[346,536,538,540,543,545,548],{"class":348,"line":537},10,[346,539,380],{"class":352},[346,541,542],{"class":363},"setVisible",[346,544,367],{"class":352},[346,546,547],{"class":514},"true",[346,549,374],{"class":352},[322,551,553],{"id":552},"flowlayout","FlowLayout",[304,555,328,556,558,559,561],{},[313,557,553],{}," organiza los componentes en una fila, de izquierda a derecha, y luego pasa a la siguiente fila si no hay suficiente espacio. Es el layout predeterminado para los ",[313,560,319],{},". Puedes configurar la alineación y el espacio entre los componentes. Por ejemplo:",[337,563,565],{"className":339,"code":564,"language":341,"meta":342,"style":342},"JPanel panel = new JPanel();\npanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 20));\npanel.add(new JButton(\"Botón 1\"));\npanel.add(new JButton(\"Botón 2\"));\npanel.add(new JButton(\"Botón 3\"));\n",[313,566,567,582,610,629,648],{"__ignoreMap":342},[346,568,569,572,574,576,579],{"class":348,"line":349},[346,570,571],{"class":352},"JPanel panel ",[346,573,357],{"class":356},[346,575,360],{"class":356},[346,577,578],{"class":363}," JPanel",[346,580,581],{"class":352},"();\n",[346,583,584,587,589,591,593,596,599,602,604,607],{"class":348,"line":377},[346,585,586],{"class":352},"panel.",[346,588,383],{"class":363},[346,590,367],{"class":352},[346,592,388],{"class":356},[346,594,595],{"class":363}," FlowLayout",[346,597,598],{"class":352},"(FlowLayout.LEFT, ",[346,600,601],{"class":514},"10",[346,603,518],{"class":352},[346,605,606],{"class":514},"20",[346,608,609],{"class":352},"));\n",[346,611,612,614,616,618,620,622,624,627],{"class":348,"line":397},[346,613,586],{"class":352},[346,615,402],{"class":363},[346,617,367],{"class":352},[346,619,388],{"class":356},[346,621,409],{"class":363},[346,623,367],{"class":352},[346,625,626],{"class":370},"\"Botón 1\"",[346,628,609],{"class":352},[346,630,631,633,635,637,639,641,643,646],{"class":348,"line":420},[346,632,586],{"class":352},[346,634,402],{"class":363},[346,636,367],{"class":352},[346,638,388],{"class":356},[346,640,409],{"class":363},[346,642,367],{"class":352},[346,644,645],{"class":370},"\"Botón 2\"",[346,647,609],{"class":352},[346,649,650,652,654,656,658,660,662,665],{"class":348,"line":441},[346,651,586],{"class":352},[346,653,402],{"class":363},[346,655,367],{"class":352},[346,657,388],{"class":356},[346,659,409],{"class":363},[346,661,367],{"class":352},[346,663,664],{"class":370},"\"Botón 3\"",[346,666,609],{"class":352},[322,668,670],{"id":669},"gridlayout","GridLayout",[304,672,328,673,675],{},[313,674,670],{}," organiza los componentes en una cuadrícula de filas y columnas. Todos los componentes tienen el mismo tamaño. Puedes especificar el número de filas y columnas al crear el layout. Por ejemplo:",[337,677,679],{"className":339,"code":678,"language":341,"meta":342,"style":342},"JPanel panel = new JPanel();\npanel.setLayout(new GridLayout(2, 3)); \u002F\u002F 2 filas y 3 columnas\npanel.add(new JButton(\"Botón 1\"));\npanel.add(new JButton(\"Botón 2\"));\npanel.add(new JButton(\"Botón 3\"));\npanel.add(new JButton(\"Botón 4\"));\npanel.add(new JButton(\"Botón 5\"));\npanel.add(new JButton(\"Botón 6\"));\n",[313,680,681,693,723,741,759,777,796,815],{"__ignoreMap":342},[346,682,683,685,687,689,691],{"class":348,"line":349},[346,684,571],{"class":352},[346,686,357],{"class":356},[346,688,360],{"class":356},[346,690,578],{"class":363},[346,692,581],{"class":352},[346,694,695,697,699,701,703,706,708,711,713,716,719],{"class":348,"line":377},[346,696,586],{"class":352},[346,698,383],{"class":363},[346,700,367],{"class":352},[346,702,388],{"class":356},[346,704,705],{"class":363}," GridLayout",[346,707,367],{"class":352},[346,709,710],{"class":514},"2",[346,712,518],{"class":352},[346,714,715],{"class":514},"3",[346,717,718],{"class":352},")); ",[346,720,722],{"class":721},"sAwPA","\u002F\u002F 2 filas y 3 columnas\n",[346,724,725,727,729,731,733,735,737,739],{"class":348,"line":397},[346,726,586],{"class":352},[346,728,402],{"class":363},[346,730,367],{"class":352},[346,732,388],{"class":356},[346,734,409],{"class":363},[346,736,367],{"class":352},[346,738,626],{"class":370},[346,740,609],{"class":352},[346,742,743,745,747,749,751,753,755,757],{"class":348,"line":420},[346,744,586],{"class":352},[346,746,402],{"class":363},[346,748,367],{"class":352},[346,750,388],{"class":356},[346,752,409],{"class":363},[346,754,367],{"class":352},[346,756,645],{"class":370},[346,758,609],{"class":352},[346,760,761,763,765,767,769,771,773,775],{"class":348,"line":441},[346,762,586],{"class":352},[346,764,402],{"class":363},[346,766,367],{"class":352},[346,768,388],{"class":356},[346,770,409],{"class":363},[346,772,367],{"class":352},[346,774,664],{"class":370},[346,776,609],{"class":352},[346,778,779,781,783,785,787,789,791,794],{"class":348,"line":462},[346,780,586],{"class":352},[346,782,402],{"class":363},[346,784,367],{"class":352},[346,786,388],{"class":356},[346,788,409],{"class":363},[346,790,367],{"class":352},[346,792,793],{"class":370},"\"Botón 4\"",[346,795,609],{"class":352},[346,797,798,800,802,804,806,808,810,813],{"class":348,"line":483},[346,799,586],{"class":352},[346,801,402],{"class":363},[346,803,367],{"class":352},[346,805,388],{"class":356},[346,807,409],{"class":363},[346,809,367],{"class":352},[346,811,812],{"class":370},"\"Botón 5\"",[346,814,609],{"class":352},[346,816,817,819,821,823,825,827,829,832],{"class":348,"line":504},[346,818,586],{"class":352},[346,820,402],{"class":363},[346,822,367],{"class":352},[346,824,388],{"class":356},[346,826,409],{"class":363},[346,828,367],{"class":352},[346,830,831],{"class":370},"\"Botón 6\"",[346,833,609],{"class":352},[322,835,837],{"id":836},"boxlayout","BoxLayout",[304,839,328,840,842],{},[313,841,837],{}," organiza los componentes en una sola fila o columna. Puedes especificar la orientación (horizontal o vertical) al crear el layout. Por ejemplo:",[337,844,846],{"className":339,"code":845,"language":341,"meta":342,"style":342},"JPanel panel = new JPanel();\npanel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); \u002F\u002F Orientación vertical\npanel.add(new JButton(\"Botón 1\"));\npanel.add(new JButton(\"Botón 2\"));\npanel.add(new JButton(\"Botón 3\"));\n",[313,847,848,860,879,897,915],{"__ignoreMap":342},[346,849,850,852,854,856,858],{"class":348,"line":349},[346,851,571],{"class":352},[346,853,357],{"class":356},[346,855,360],{"class":356},[346,857,578],{"class":363},[346,859,581],{"class":352},[346,861,862,864,866,868,870,873,876],{"class":348,"line":377},[346,863,586],{"class":352},[346,865,383],{"class":363},[346,867,367],{"class":352},[346,869,388],{"class":356},[346,871,872],{"class":363}," BoxLayout",[346,874,875],{"class":352},"(panel, BoxLayout.Y_AXIS)); ",[346,877,878],{"class":721},"\u002F\u002F Orientación vertical\n",[346,880,881,883,885,887,889,891,893,895],{"class":348,"line":397},[346,882,586],{"class":352},[346,884,402],{"class":363},[346,886,367],{"class":352},[346,888,388],{"class":356},[346,890,409],{"class":363},[346,892,367],{"class":352},[346,894,626],{"class":370},[346,896,609],{"class":352},[346,898,899,901,903,905,907,909,911,913],{"class":348,"line":420},[346,900,586],{"class":352},[346,902,402],{"class":363},[346,904,367],{"class":352},[346,906,388],{"class":356},[346,908,409],{"class":363},[346,910,367],{"class":352},[346,912,645],{"class":370},[346,914,609],{"class":352},[346,916,917,919,921,923,925,927,929,931],{"class":348,"line":441},[346,918,586],{"class":352},[346,920,402],{"class":363},[346,922,367],{"class":352},[346,924,388],{"class":356},[346,926,409],{"class":363},[346,928,367],{"class":352},[346,930,664],{"class":370},[346,932,609],{"class":352},[322,934,936],{"id":935},"gridbaglayout","GridBagLayout",[304,938,328,939,941],{},[313,940,936],{}," es un layout más flexible que permite organizar los componentes en una cuadrícula, pero con la capacidad de que los componentes ocupen varias filas o columnas. Es ideal para interfaces más complejas. Por ejemplo:",[337,943,945],{"className":339,"code":944,"language":341,"meta":342,"style":342},"JPanel panel = new JPanel();\npanel.setLayout(new GridBagLayout());\nGridBagConstraints gbc = new GridBagConstraints();\ngbc.gridx = 0;\ngbc.gridy = 0;\npanel.add(new JButton(\"Botón 1\"), gbc); \ngbc.gridx = 1;\ngbc.gridy = 0;\npanel.add(new JButton(\"Botón 2\"), gbc);\ngbc.gridx = 0;\ngbc.gridy = 1;\ngbc.gridwidth = 2; \u002F\u002F El botón ocupará dos columnas\npanel.add(new JButton(\"Botón 3\"), gbc);\n",[313,946,947,959,974,988,1001,1012,1031,1042,1052,1071,1081,1092,1109],{"__ignoreMap":342},[346,948,949,951,953,955,957],{"class":348,"line":349},[346,950,571],{"class":352},[346,952,357],{"class":356},[346,954,360],{"class":356},[346,956,578],{"class":363},[346,958,581],{"class":352},[346,960,961,963,965,967,969,972],{"class":348,"line":377},[346,962,586],{"class":352},[346,964,383],{"class":363},[346,966,367],{"class":352},[346,968,388],{"class":356},[346,970,971],{"class":363}," GridBagLayout",[346,973,394],{"class":352},[346,975,976,979,981,983,986],{"class":348,"line":397},[346,977,978],{"class":352},"GridBagConstraints gbc ",[346,980,357],{"class":356},[346,982,360],{"class":356},[346,984,985],{"class":363}," GridBagConstraints",[346,987,581],{"class":352},[346,989,990,993,995,998],{"class":348,"line":420},[346,991,992],{"class":352},"gbc.gridx ",[346,994,357],{"class":356},[346,996,997],{"class":514}," 0",[346,999,1000],{"class":352},";\n",[346,1002,1003,1006,1008,1010],{"class":348,"line":441},[346,1004,1005],{"class":352},"gbc.gridy ",[346,1007,357],{"class":356},[346,1009,997],{"class":514},[346,1011,1000],{"class":352},[346,1013,1014,1016,1018,1020,1022,1024,1026,1028],{"class":348,"line":462},[346,1015,586],{"class":352},[346,1017,402],{"class":363},[346,1019,367],{"class":352},[346,1021,388],{"class":356},[346,1023,409],{"class":363},[346,1025,367],{"class":352},[346,1027,626],{"class":370},[346,1029,1030],{"class":352},"), gbc); \n",[346,1032,1033,1035,1037,1040],{"class":348,"line":483},[346,1034,992],{"class":352},[346,1036,357],{"class":356},[346,1038,1039],{"class":514}," 1",[346,1041,1000],{"class":352},[346,1043,1044,1046,1048,1050],{"class":348,"line":504},[346,1045,1005],{"class":352},[346,1047,357],{"class":356},[346,1049,997],{"class":514},[346,1051,1000],{"class":352},[346,1053,1054,1056,1058,1060,1062,1064,1066,1068],{"class":348,"line":526},[346,1055,586],{"class":352},[346,1057,402],{"class":363},[346,1059,367],{"class":352},[346,1061,388],{"class":356},[346,1063,409],{"class":363},[346,1065,367],{"class":352},[346,1067,645],{"class":370},[346,1069,1070],{"class":352},"), gbc);\n",[346,1072,1073,1075,1077,1079],{"class":348,"line":537},[346,1074,992],{"class":352},[346,1076,357],{"class":356},[346,1078,997],{"class":514},[346,1080,1000],{"class":352},[346,1082,1084,1086,1088,1090],{"class":348,"line":1083},11,[346,1085,1005],{"class":352},[346,1087,357],{"class":356},[346,1089,1039],{"class":514},[346,1091,1000],{"class":352},[346,1093,1095,1098,1100,1103,1106],{"class":348,"line":1094},12,[346,1096,1097],{"class":352},"gbc.gridwidth ",[346,1099,357],{"class":356},[346,1101,1102],{"class":514}," 2",[346,1104,1105],{"class":352},"; ",[346,1107,1108],{"class":721},"\u002F\u002F El botón ocupará dos columnas\n",[346,1110,1112,1114,1116,1118,1120,1122,1124,1126],{"class":348,"line":1111},13,[346,1113,586],{"class":352},[346,1115,402],{"class":363},[346,1117,367],{"class":352},[346,1119,388],{"class":356},[346,1121,409],{"class":363},[346,1123,367],{"class":352},[346,1125,664],{"class":370},[346,1127,1070],{"class":352},[304,1129,1130],{},"Estos son solo algunos de los layouts disponibles en Java Swing. Cada layout tiene sus propias características y es adecuado para diferentes tipos de interfaces gráficas. Es importante elegir el layout adecuado para organizar tus componentes de manera efectiva y mejorar la usabilidad de tu aplicación.",[322,1132,1134],{"id":1133},"conclusión","Conclusión",[304,1136,1137,1138,518,1140,518,1142,518,1144,1146,1147,1149],{},"En esta sección, hemos explorado los diferentes tipos de layouts en Java Swing, incluyendo ",[313,1139,325],{},[313,1141,553],{},[313,1143,670],{},[313,1145,837],{}," y ",[313,1148,936],{},". Cada layout tiene sus propias características y es adecuado para diferentes tipos de interfaces gráficas. Al elegir el layout adecuado, puedes organizar tus componentes de manera efectiva y mejorar la usabilidad de tu aplicación. En las próximas secciones, aprenderemos cómo personalizar aún más nuestras interfaces gráficas utilizando estos layouts y otros elementos visuales.",[1151,1152,1153],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}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":342,"searchDepth":377,"depth":377,"links":1155},[1156,1157,1158,1159,1160,1161],{"id":324,"depth":377,"text":325},{"id":552,"depth":377,"text":553},{"id":669,"depth":377,"text":670},{"id":836,"depth":377,"text":837},{"id":935,"depth":377,"text":936},{"id":1133,"depth":377,"text":1134},"Aprende sobre los diferentes tipos de layouts en Java Swing para organizar los componentes de tu interfaz gráfica de manera efectiva.","md",null,{"editButton":104},{"icon":25},{"title":67,"description":1162},"0YumIt-lqKu6A_qFnDqZP43iJ-FnFlnyAaI83po2vlM",[1170,1172],{"title":63,"path":64,"stem":65,"description":1171,"icon":25,"children":-1},"Aprende sobre los atributos comunes que puedes configurar en los componentes de diseño de Swing.",{"title":76,"path":77,"stem":78,"description":1173,"children":-1},"Aprende sobre la jerarquía de clases en Java Swing y cómo se organizan los componentes gráficos en esta biblioteca.",1775101370924]