[{"data":1,"prerenderedAt":950},["ShallowReactive",2],{"navigation_docs":3,"-gui-jpanel":298,"-gui-jpanel-surround":945},[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":39,"body":300,"description":939,"extension":940,"links":941,"meta":942,"navigation":597,"path":40,"seo":943,"stem":41,"__hash__":944},"docs\u002F2.gui\u002F05.jpanel.md",{"type":301,"value":302,"toc":932},"minimark",[303,312,317,326,358,362,372,424,428,446,538,541,545,559,857,869,873,883,928],[304,305,306,307,311],"p",{},"El componente ",[308,309,310],"code",{},"JPanel"," en Java Swing es un contenedor ligero que se utiliza para agrupar otros componentes gráficos. Es especialmente útil para organizar la interfaz de usuario en secciones lógicas y aplicar diferentes diseños a cada sección.",[313,314,316],"h2",{"id":315},"creación-de-un-jpanel","Creación de un JPanel",[304,318,319,320,322,323,325],{},"Para crear un ",[308,321,310],{},", simplemente instancias la clase ",[308,324,310],{},":",[327,328,333],"pre",{"className":329,"code":330,"language":331,"meta":332,"style":332},"language-java shiki shiki-themes github-dark","JPanel panel = new JPanel();\n","java","",[308,334,335],{"__ignoreMap":332},[336,337,340,344,348,351,355],"span",{"class":338,"line":339},"line",1,[336,341,343],{"class":342},"s95oV","JPanel panel ",[336,345,347],{"class":346},"snl16","=",[336,349,350],{"class":346}," new",[336,352,354],{"class":353},"svObZ"," JPanel",[336,356,357],{"class":342},"();\n",[313,359,361],{"id":360},"agregar-componentes-a-un-jpanel","Agregar componentes a un JPanel",[304,363,364,365,367,368,371],{},"Puedes agregar otros componentes a un ",[308,366,310],{}," utilizando el método ",[308,369,370],{},"add()",". Por ejemplo:",[327,373,375],{"className":329,"code":374,"language":331,"meta":332,"style":332},"JPanel panel = new JPanel();\nJButton button = new JButton(\"Click Me\");\npanel.add(button);\n",[308,376,377,389,412],{"__ignoreMap":332},[336,378,379,381,383,385,387],{"class":338,"line":339},[336,380,343],{"class":342},[336,382,347],{"class":346},[336,384,350],{"class":346},[336,386,354],{"class":353},[336,388,357],{"class":342},[336,390,392,395,397,399,402,405,409],{"class":338,"line":391},2,[336,393,394],{"class":342},"JButton button ",[336,396,347],{"class":346},[336,398,350],{"class":346},[336,400,401],{"class":353}," JButton",[336,403,404],{"class":342},"(",[336,406,408],{"class":407},"sU2Wk","\"Click Me\"",[336,410,411],{"class":342},");\n",[336,413,415,418,421],{"class":338,"line":414},3,[336,416,417],{"class":342},"panel.",[336,419,420],{"class":353},"add",[336,422,423],{"class":342},"(button);\n",[313,425,427],{"id":426},"establecer-un-layout","Establecer un Layout",[304,429,430,431,433,434,437,438,441,442,445],{},"El ",[308,432,310],{}," utiliza un administrador de diseño (layout manager) para organizar los componentes que contiene. El layout por defecto es ",[308,435,436],{},"FlowLayout",", pero puedes cambiarlo a otros layouts como ",[308,439,440],{},"BorderLayout",", ",[308,443,444],{},"GridLayout",", etc. Aquí hay un ejemplo de cómo establecer un layout diferente:",[327,447,449],{"className":329,"code":448,"language":331,"meta":332,"style":332},"JPanel panel = new JPanel();\npanel.setLayout(new BorderLayout());\nJButton buttonNorth = new JButton(\"North\");\nJButton buttonSouth = new JButton(\"South\");\npanel.add(buttonNorth, BorderLayout.NORTH);\npanel.add(buttonSouth, BorderLayout.SOUTH);\n",[308,450,451,463,481,499,518,528],{"__ignoreMap":332},[336,452,453,455,457,459,461],{"class":338,"line":339},[336,454,343],{"class":342},[336,456,347],{"class":346},[336,458,350],{"class":346},[336,460,354],{"class":353},[336,462,357],{"class":342},[336,464,465,467,470,472,475,478],{"class":338,"line":391},[336,466,417],{"class":342},[336,468,469],{"class":353},"setLayout",[336,471,404],{"class":342},[336,473,474],{"class":346},"new",[336,476,477],{"class":353}," BorderLayout",[336,479,480],{"class":342},"());\n",[336,482,483,486,488,490,492,494,497],{"class":338,"line":414},[336,484,485],{"class":342},"JButton buttonNorth ",[336,487,347],{"class":346},[336,489,350],{"class":346},[336,491,401],{"class":353},[336,493,404],{"class":342},[336,495,496],{"class":407},"\"North\"",[336,498,411],{"class":342},[336,500,502,505,507,509,511,513,516],{"class":338,"line":501},4,[336,503,504],{"class":342},"JButton buttonSouth ",[336,506,347],{"class":346},[336,508,350],{"class":346},[336,510,401],{"class":353},[336,512,404],{"class":342},[336,514,515],{"class":407},"\"South\"",[336,517,411],{"class":342},[336,519,521,523,525],{"class":338,"line":520},5,[336,522,417],{"class":342},[336,524,420],{"class":353},[336,526,527],{"class":342},"(buttonNorth, BorderLayout.NORTH);\n",[336,529,531,533,535],{"class":338,"line":530},6,[336,532,417],{"class":342},[336,534,420],{"class":353},[336,536,537],{"class":342},"(buttonSouth, BorderLayout.SOUTH);\n",[304,539,540],{},"Más adelante, veremos de forma más detallada los diferentes tipos de layouts disponibles en Swing.",[313,542,544],{"id":543},"uso-de-jpanel-en-un-jframe","Uso de JPanel en un JFrame",[304,546,430,547,549,550,553,554,556,557,325],{},[308,548,310],{}," se utiliza comúnmente dentro de un ",[308,551,552],{},"JFrame"," para organizar la interfaz gráfica. Aquí tienes un ejemplo completo que muestra cómo usar un ",[308,555,310],{}," dentro de un ",[308,558,552],{},[327,560,562],{"className":329,"code":561,"language":331,"meta":332,"style":332},"import javax.swing.JButton;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\nimport java.awt.BorderLayout;\n\npublic class JPanelExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JPanel\");\n        JPanel panel = new JPanel();\n        \n        \u002F\u002F Establecer un layout para el panel\n        panel.setLayout(new BorderLayout());\n        \n        \u002F\u002F Agregar botones al panel\n        JButton buttonNorth = new JButton(\"North\");\n        JButton buttonSouth = new JButton(\"South\");\n        panel.add(buttonNorth, BorderLayout.NORTH);\n        panel.add(buttonSouth, BorderLayout.SOUTH);\n        \n        \u002F\u002F Agregar el panel al frame\n        frame.add(panel);\n        \n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[308,563,564,572,579,586,593,599,613,643,663,677,683,690,706,711,717,735,753,762,771,776,782,793,798,819,830,845,851],{"__ignoreMap":332},[336,565,566,569],{"class":338,"line":339},[336,567,568],{"class":346},"import",[336,570,571],{"class":342}," javax.swing.JButton;\n",[336,573,574,576],{"class":338,"line":391},[336,575,568],{"class":346},[336,577,578],{"class":342}," javax.swing.JFrame;\n",[336,580,581,583],{"class":338,"line":414},[336,582,568],{"class":346},[336,584,585],{"class":342}," javax.swing.JPanel;\n",[336,587,588,590],{"class":338,"line":501},[336,589,568],{"class":346},[336,591,592],{"class":342}," java.awt.BorderLayout;\n",[336,594,595],{"class":338,"line":520},[336,596,598],{"emptyLinePlaceholder":597},true,"\n",[336,600,601,604,607,610],{"class":338,"line":530},[336,602,603],{"class":346},"public",[336,605,606],{"class":346}," class",[336,608,609],{"class":353}," JPanelExample",[336,611,612],{"class":342}," {\n",[336,614,616,619,622,625,628,630,633,636,640],{"class":338,"line":615},7,[336,617,618],{"class":346},"    public",[336,620,621],{"class":346}," static",[336,623,624],{"class":346}," void",[336,626,627],{"class":353}," main",[336,629,404],{"class":342},[336,631,632],{"class":346},"String",[336,634,635],{"class":342},"[] ",[336,637,639],{"class":638},"s9osk","args",[336,641,642],{"class":342},") {\n",[336,644,646,649,651,653,656,658,661],{"class":338,"line":645},8,[336,647,648],{"class":342},"        JFrame frame ",[336,650,347],{"class":346},[336,652,350],{"class":346},[336,654,655],{"class":353}," JFrame",[336,657,404],{"class":342},[336,659,660],{"class":407},"\"Ejemplo de JPanel\"",[336,662,411],{"class":342},[336,664,666,669,671,673,675],{"class":338,"line":665},9,[336,667,668],{"class":342},"        JPanel panel ",[336,670,347],{"class":346},[336,672,350],{"class":346},[336,674,354],{"class":353},[336,676,357],{"class":342},[336,678,680],{"class":338,"line":679},10,[336,681,682],{"class":342},"        \n",[336,684,686],{"class":338,"line":685},11,[336,687,689],{"class":688},"sAwPA","        \u002F\u002F Establecer un layout para el panel\n",[336,691,693,696,698,700,702,704],{"class":338,"line":692},12,[336,694,695],{"class":342},"        panel.",[336,697,469],{"class":353},[336,699,404],{"class":342},[336,701,474],{"class":346},[336,703,477],{"class":353},[336,705,480],{"class":342},[336,707,709],{"class":338,"line":708},13,[336,710,682],{"class":342},[336,712,714],{"class":338,"line":713},14,[336,715,716],{"class":688},"        \u002F\u002F Agregar botones al panel\n",[336,718,720,723,725,727,729,731,733],{"class":338,"line":719},15,[336,721,722],{"class":342},"        JButton buttonNorth ",[336,724,347],{"class":346},[336,726,350],{"class":346},[336,728,401],{"class":353},[336,730,404],{"class":342},[336,732,496],{"class":407},[336,734,411],{"class":342},[336,736,738,741,743,745,747,749,751],{"class":338,"line":737},16,[336,739,740],{"class":342},"        JButton buttonSouth ",[336,742,347],{"class":346},[336,744,350],{"class":346},[336,746,401],{"class":353},[336,748,404],{"class":342},[336,750,515],{"class":407},[336,752,411],{"class":342},[336,754,756,758,760],{"class":338,"line":755},17,[336,757,695],{"class":342},[336,759,420],{"class":353},[336,761,527],{"class":342},[336,763,765,767,769],{"class":338,"line":764},18,[336,766,695],{"class":342},[336,768,420],{"class":353},[336,770,537],{"class":342},[336,772,774],{"class":338,"line":773},19,[336,775,682],{"class":342},[336,777,779],{"class":338,"line":778},20,[336,780,781],{"class":688},"        \u002F\u002F Agregar el panel al frame\n",[336,783,785,788,790],{"class":338,"line":784},21,[336,786,787],{"class":342},"        frame.",[336,789,420],{"class":353},[336,791,792],{"class":342},"(panel);\n",[336,794,796],{"class":338,"line":795},22,[336,797,682],{"class":342},[336,799,801,803,806,808,812,814,817],{"class":338,"line":800},23,[336,802,787],{"class":342},[336,804,805],{"class":353},"setSize",[336,807,404],{"class":342},[336,809,811],{"class":810},"sDLfK","400",[336,813,441],{"class":342},[336,815,816],{"class":810},"300",[336,818,411],{"class":342},[336,820,822,824,827],{"class":338,"line":821},24,[336,823,787],{"class":342},[336,825,826],{"class":353},"setDefaultCloseOperation",[336,828,829],{"class":342},"(JFrame.EXIT_ON_CLOSE);\n",[336,831,833,835,838,840,843],{"class":338,"line":832},25,[336,834,787],{"class":342},[336,836,837],{"class":353},"setVisible",[336,839,404],{"class":342},[336,841,842],{"class":810},"true",[336,844,411],{"class":342},[336,846,848],{"class":338,"line":847},26,[336,849,850],{"class":342},"    }\n",[336,852,854],{"class":338,"line":853},27,[336,855,856],{"class":342},"}\n",[304,858,859,860,862,863,865,866,868],{},"En este ejemplo, hemos creado un ",[308,861,552],{}," que contiene un ",[308,864,310],{},". El panel utiliza un ",[308,867,440],{}," para organizar dos botones en la parte superior e inferior del panel.",[313,870,872],{"id":871},"atributos-adicionales","Atributos adicionales",[304,874,875,876,878,879,882],{},"La clase ",[308,877,310],{}," también permite establecer atributos adicionales como el color de fondo, bordes, y más. Para ser más específico, puedes usar métodos como ",[308,880,881],{},"setBackground(Color color)"," para cambiar el color de fondo del panel, ahora veamos los métodos para personalizar tu JPanel:",[884,885,886,892,910,916,922],"ul",{},[887,888,889,891],"li",{},[308,890,881],{},": Cambia el color de fondo del panel.",[887,893,894,897,898,901,902,905,906,909],{},[308,895,896],{},"setBorder(Border border)",": Establece un borde alrededor del panel. Tomando en cuenta que los bordes pueden ser creados usando la clase ",[308,899,900],{},"BorderFactory",", usando métodos como ",[308,903,904],{},"createLineBorder(Color color)"," o ",[308,907,908],{},"createEmptyBorder(int top, int left, int bottom, int right)"," o bien crear bordes con estilos más complejos.",[887,911,912,915],{},[308,913,914],{},"setPreferredSize(Dimension dimension)",": Define el tamaño preferido del panel.",[887,917,918,921],{},[308,919,920],{},"setOpaque(boolean isOpaque)",": Define si el panel es opaco o transparente. Esto es especialmente útil cuando se trabaja con colores de fondo y superposiciones.",[887,923,924,927],{},[308,925,926],{},"setLayout(LayoutManager layout)",": Establece el administrador de diseño para el panel, permitiendo una organización personalizada de los componentes dentro del panel.",[929,930,931],"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 .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 .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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 .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":332,"searchDepth":391,"depth":391,"links":933},[934,935,936,937,938],{"id":315,"depth":391,"text":316},{"id":360,"depth":391,"text":361},{"id":426,"depth":391,"text":427},{"id":543,"depth":391,"text":544},{"id":871,"depth":391,"text":872},"Aprende a usar el componente JPanel en Java Swing para organizar otros componentes gráficos.","md",null,{"editButton":104},{"title":39,"description":939},"zCiQaeh802L-yy93XN5J2NR1vY0XEo7btOQMy7m7oGs",[946,948],{"title":35,"path":36,"stem":37,"description":947,"children":-1},"Aprende a usar el componente JFrame en Java Swing para crear ventanas en aplicaciones gráficas.",{"title":43,"path":44,"stem":45,"description":949,"children":-1},"Aprende a usar el componente JButton en Java Swing para crear botones interactivos en aplicaciones gráficas.",1775101369776]