[{"data":1,"prerenderedAt":1622},["ShallowReactive",2],{"navigation_docs":3,"-gui-controles":298,"-gui-controles-surround":1617},[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":59,"body":300,"description":1610,"extension":1611,"links":1612,"meta":1613,"navigation":1614,"path":60,"seo":1615,"stem":61,"__hash__":1616},"docs\u002F2.gui\u002F10.controles.md",{"type":301,"value":302,"toc":1602},"minimark",[303,307,312,322,602,605,622,626,640,894,897,901,908,1113,1119,1129,1133,1140,1361,1364,1368,1375,1555,1563,1567,1570,1598],[304,305,306],"p",{},"En esta sección, exploraremos algunos de los controles más comunes en Java Swing que utilizaremos para construir interfaces gráficas interactivas. Estos controles incluyen checkboxes, radio buttons, listas desplegables y barras de progreso. A continuación, se describen estos controles y su uso.",[308,309,311],"h2",{"id":310},"jcheckbox","JCheckBox",[304,313,314,315,318,319,321],{},"El componente ",[316,317,311],"code",{}," permite a los usuarios seleccionar o deseleccionar una opción. Es útil cuando se desea ofrecer múltiples opciones independientes entre sí. Aquí hay un ejemplo de cómo crear y utilizar un ",[316,320,311],{},":",[323,324,329],"pre",{"className":325,"code":326,"language":327,"meta":328,"style":328},"language-java shiki shiki-themes github-dark","import javax.swing.JCheckBox;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class JCheckBoxExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JCheckBox\");\n        JPanel panel = new JPanel();\n        \n        JCheckBox checkBox1 = new JCheckBox(\"Opción 1\");\n        JCheckBox checkBox2 = new JCheckBox(\"Opción 2\");\n        \n        panel.add(checkBox1);\n        panel.add(checkBox2);\n        \n        frame.add(panel);\n        frame.setSize(300, 200);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n","java","",[316,330,331,344,352,360,367,383,414,438,454,460,480,499,504,516,526,531,542,564,575,590,596],{"__ignoreMap":328},[332,333,336,340],"span",{"class":334,"line":335},"line",1,[332,337,339],{"class":338},"snl16","import",[332,341,343],{"class":342},"s95oV"," javax.swing.JCheckBox;\n",[332,345,347,349],{"class":334,"line":346},2,[332,348,339],{"class":338},[332,350,351],{"class":342}," javax.swing.JFrame;\n",[332,353,355,357],{"class":334,"line":354},3,[332,356,339],{"class":338},[332,358,359],{"class":342}," javax.swing.JPanel;\n",[332,361,363],{"class":334,"line":362},4,[332,364,366],{"emptyLinePlaceholder":365},true,"\n",[332,368,370,373,376,380],{"class":334,"line":369},5,[332,371,372],{"class":338},"public",[332,374,375],{"class":338}," class",[332,377,379],{"class":378},"svObZ"," JCheckBoxExample",[332,381,382],{"class":342}," {\n",[332,384,386,389,392,395,398,401,404,407,411],{"class":334,"line":385},6,[332,387,388],{"class":338},"    public",[332,390,391],{"class":338}," static",[332,393,394],{"class":338}," void",[332,396,397],{"class":378}," main",[332,399,400],{"class":342},"(",[332,402,403],{"class":338},"String",[332,405,406],{"class":342},"[] ",[332,408,410],{"class":409},"s9osk","args",[332,412,413],{"class":342},") {\n",[332,415,417,420,423,426,429,431,435],{"class":334,"line":416},7,[332,418,419],{"class":342},"        JFrame frame ",[332,421,422],{"class":338},"=",[332,424,425],{"class":338}," new",[332,427,428],{"class":378}," JFrame",[332,430,400],{"class":342},[332,432,434],{"class":433},"sU2Wk","\"Ejemplo de JCheckBox\"",[332,436,437],{"class":342},");\n",[332,439,441,444,446,448,451],{"class":334,"line":440},8,[332,442,443],{"class":342},"        JPanel panel ",[332,445,422],{"class":338},[332,447,425],{"class":338},[332,449,450],{"class":378}," JPanel",[332,452,453],{"class":342},"();\n",[332,455,457],{"class":334,"line":456},9,[332,458,459],{"class":342},"        \n",[332,461,463,466,468,470,473,475,478],{"class":334,"line":462},10,[332,464,465],{"class":342},"        JCheckBox checkBox1 ",[332,467,422],{"class":338},[332,469,425],{"class":338},[332,471,472],{"class":378}," JCheckBox",[332,474,400],{"class":342},[332,476,477],{"class":433},"\"Opción 1\"",[332,479,437],{"class":342},[332,481,483,486,488,490,492,494,497],{"class":334,"line":482},11,[332,484,485],{"class":342},"        JCheckBox checkBox2 ",[332,487,422],{"class":338},[332,489,425],{"class":338},[332,491,472],{"class":378},[332,493,400],{"class":342},[332,495,496],{"class":433},"\"Opción 2\"",[332,498,437],{"class":342},[332,500,502],{"class":334,"line":501},12,[332,503,459],{"class":342},[332,505,507,510,513],{"class":334,"line":506},13,[332,508,509],{"class":342},"        panel.",[332,511,512],{"class":378},"add",[332,514,515],{"class":342},"(checkBox1);\n",[332,517,519,521,523],{"class":334,"line":518},14,[332,520,509],{"class":342},[332,522,512],{"class":378},[332,524,525],{"class":342},"(checkBox2);\n",[332,527,529],{"class":334,"line":528},15,[332,530,459],{"class":342},[332,532,534,537,539],{"class":334,"line":533},16,[332,535,536],{"class":342},"        frame.",[332,538,512],{"class":378},[332,540,541],{"class":342},"(panel);\n",[332,543,545,547,550,552,556,559,562],{"class":334,"line":544},17,[332,546,536],{"class":342},[332,548,549],{"class":378},"setSize",[332,551,400],{"class":342},[332,553,555],{"class":554},"sDLfK","300",[332,557,558],{"class":342},", ",[332,560,561],{"class":554},"200",[332,563,437],{"class":342},[332,565,567,569,572],{"class":334,"line":566},18,[332,568,536],{"class":342},[332,570,571],{"class":378},"setDefaultCloseOperation",[332,573,574],{"class":342},"(JFrame.EXIT_ON_CLOSE);\n",[332,576,578,580,583,585,588],{"class":334,"line":577},19,[332,579,536],{"class":342},[332,581,582],{"class":378},"setVisible",[332,584,400],{"class":342},[332,586,587],{"class":554},"true",[332,589,437],{"class":342},[332,591,593],{"class":334,"line":592},20,[332,594,595],{"class":342},"    }\n",[332,597,599],{"class":334,"line":598},21,[332,600,601],{"class":342},"}\n",[304,603,604],{},"En este ejemplo, hemos creado dos checkboxes que los usuarios pueden seleccionar o deseleccionar.",[606,607,314,608,610,611,614,615,617,618,621],"note",{},[316,609,311],{}," también permite agregar ",[316,612,613],{},"ActionListener"," para manejar eventos cuando el estado del checkbox cambia. Además de ",[316,616,613],{},", puedes utilizar ",[316,619,620],{},"ItemListener"," para detectar cambios en el estado del checkbox (seleccionado o deseleccionado).",[308,623,625],{"id":624},"jradiobutton","JRadioButton",[304,627,314,628,630,631,633,634,637,638,321],{},[316,629,625],{}," permite a los usuarios seleccionar una opción de un conjunto mutuamente excluyente. Para agrupar varios ",[316,632,625],{},", se utiliza la clase ",[316,635,636],{},"ButtonGroup",". Aquí tienes un ejemplo de cómo crear y utilizar ",[316,639,625],{},[323,641,643],{"className":325,"code":642,"language":327,"meta":328,"style":328},"import javax.swing.ButtonGroup;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\nimport javax.swing.JRadioButton;\n\npublic class JRadioButtonExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JRadioButton\");\n        JPanel panel = new JPanel();\n        \n        JRadioButton radioButton1 = new JRadioButton(\"Opción A\");\n        JRadioButton radioButton2 = new JRadioButton(\"Opción B\");\n        \n        ButtonGroup group = new ButtonGroup();\n        group.add(radioButton1);\n        group.add(radioButton2);\n        \n        panel.add(radioButton1);\n        panel.add(radioButton2);\n        \n        frame.add(panel);\n        frame.setSize(300, 200);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,644,645,652,658,664,671,675,686,706,723,735,739,758,776,780,794,804,813,817,825,833,837,845,862,871,884,889],{"__ignoreMap":328},[332,646,647,649],{"class":334,"line":335},[332,648,339],{"class":338},[332,650,651],{"class":342}," javax.swing.ButtonGroup;\n",[332,653,654,656],{"class":334,"line":346},[332,655,339],{"class":338},[332,657,351],{"class":342},[332,659,660,662],{"class":334,"line":354},[332,661,339],{"class":338},[332,663,359],{"class":342},[332,665,666,668],{"class":334,"line":362},[332,667,339],{"class":338},[332,669,670],{"class":342}," javax.swing.JRadioButton;\n",[332,672,673],{"class":334,"line":369},[332,674,366],{"emptyLinePlaceholder":365},[332,676,677,679,681,684],{"class":334,"line":385},[332,678,372],{"class":338},[332,680,375],{"class":338},[332,682,683],{"class":378}," JRadioButtonExample",[332,685,382],{"class":342},[332,687,688,690,692,694,696,698,700,702,704],{"class":334,"line":416},[332,689,388],{"class":338},[332,691,391],{"class":338},[332,693,394],{"class":338},[332,695,397],{"class":378},[332,697,400],{"class":342},[332,699,403],{"class":338},[332,701,406],{"class":342},[332,703,410],{"class":409},[332,705,413],{"class":342},[332,707,708,710,712,714,716,718,721],{"class":334,"line":440},[332,709,419],{"class":342},[332,711,422],{"class":338},[332,713,425],{"class":338},[332,715,428],{"class":378},[332,717,400],{"class":342},[332,719,720],{"class":433},"\"Ejemplo de JRadioButton\"",[332,722,437],{"class":342},[332,724,725,727,729,731,733],{"class":334,"line":456},[332,726,443],{"class":342},[332,728,422],{"class":338},[332,730,425],{"class":338},[332,732,450],{"class":378},[332,734,453],{"class":342},[332,736,737],{"class":334,"line":462},[332,738,459],{"class":342},[332,740,741,744,746,748,751,753,756],{"class":334,"line":482},[332,742,743],{"class":342},"        JRadioButton radioButton1 ",[332,745,422],{"class":338},[332,747,425],{"class":338},[332,749,750],{"class":378}," JRadioButton",[332,752,400],{"class":342},[332,754,755],{"class":433},"\"Opción A\"",[332,757,437],{"class":342},[332,759,760,763,765,767,769,771,774],{"class":334,"line":501},[332,761,762],{"class":342},"        JRadioButton radioButton2 ",[332,764,422],{"class":338},[332,766,425],{"class":338},[332,768,750],{"class":378},[332,770,400],{"class":342},[332,772,773],{"class":433},"\"Opción B\"",[332,775,437],{"class":342},[332,777,778],{"class":334,"line":506},[332,779,459],{"class":342},[332,781,782,785,787,789,792],{"class":334,"line":518},[332,783,784],{"class":342},"        ButtonGroup group ",[332,786,422],{"class":338},[332,788,425],{"class":338},[332,790,791],{"class":378}," ButtonGroup",[332,793,453],{"class":342},[332,795,796,799,801],{"class":334,"line":528},[332,797,798],{"class":342},"        group.",[332,800,512],{"class":378},[332,802,803],{"class":342},"(radioButton1);\n",[332,805,806,808,810],{"class":334,"line":533},[332,807,798],{"class":342},[332,809,512],{"class":378},[332,811,812],{"class":342},"(radioButton2);\n",[332,814,815],{"class":334,"line":544},[332,816,459],{"class":342},[332,818,819,821,823],{"class":334,"line":566},[332,820,509],{"class":342},[332,822,512],{"class":378},[332,824,803],{"class":342},[332,826,827,829,831],{"class":334,"line":577},[332,828,509],{"class":342},[332,830,512],{"class":378},[332,832,812],{"class":342},[332,834,835],{"class":334,"line":592},[332,836,459],{"class":342},[332,838,839,841,843],{"class":334,"line":598},[332,840,536],{"class":342},[332,842,512],{"class":378},[332,844,541],{"class":342},[332,846,848,850,852,854,856,858,860],{"class":334,"line":847},22,[332,849,536],{"class":342},[332,851,549],{"class":378},[332,853,400],{"class":342},[332,855,555],{"class":554},[332,857,558],{"class":342},[332,859,561],{"class":554},[332,861,437],{"class":342},[332,863,865,867,869],{"class":334,"line":864},23,[332,866,536],{"class":342},[332,868,571],{"class":378},[332,870,574],{"class":342},[332,872,874,876,878,880,882],{"class":334,"line":873},24,[332,875,536],{"class":342},[332,877,582],{"class":378},[332,879,400],{"class":342},[332,881,587],{"class":554},[332,883,437],{"class":342},[332,885,887],{"class":334,"line":886},25,[332,888,595],{"class":342},[332,890,892],{"class":334,"line":891},26,[332,893,601],{"class":342},[304,895,896],{},"En este ejemplo, hemos creado dos radio buttons que pertenecen al mismo grupo, lo que significa que solo uno de ellos puede estar seleccionado a la vez.",[308,898,900],{"id":899},"jcombobox","JComboBox",[304,902,314,903,905,906,321],{},[316,904,900],{}," proporciona una lista desplegable de opciones de las cuales el usuario puede seleccionar una. Aquí tienes un ejemplo de cómo crear y utilizar un ",[316,907,900],{},[323,909,911],{"className":325,"code":910,"language":327,"meta":328,"style":328},"import javax.swing.JComboBox;\nimport javax.swing.JFrame;\nimport javax.swing.JPanel;\n\npublic class JComboBoxExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JComboBox\");\n        JPanel panel = new JPanel();\n        \n        String[] options = {\"Opción 1\", \"Opción 2\", \"Opción 3\"};\n        JComboBox\u003CString> comboBox = new JComboBox\u003C>(options);\n        \n        panel.add(comboBox);\n        \n        frame.add(panel);\n        frame.setSize(300, 200);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,912,913,920,926,932,936,947,967,984,996,1000,1027,1044,1048,1057,1061,1069,1085,1093,1105,1109],{"__ignoreMap":328},[332,914,915,917],{"class":334,"line":335},[332,916,339],{"class":338},[332,918,919],{"class":342}," javax.swing.JComboBox;\n",[332,921,922,924],{"class":334,"line":346},[332,923,339],{"class":338},[332,925,351],{"class":342},[332,927,928,930],{"class":334,"line":354},[332,929,339],{"class":338},[332,931,359],{"class":342},[332,933,934],{"class":334,"line":362},[332,935,366],{"emptyLinePlaceholder":365},[332,937,938,940,942,945],{"class":334,"line":369},[332,939,372],{"class":338},[332,941,375],{"class":338},[332,943,944],{"class":378}," JComboBoxExample",[332,946,382],{"class":342},[332,948,949,951,953,955,957,959,961,963,965],{"class":334,"line":385},[332,950,388],{"class":338},[332,952,391],{"class":338},[332,954,394],{"class":338},[332,956,397],{"class":378},[332,958,400],{"class":342},[332,960,403],{"class":338},[332,962,406],{"class":342},[332,964,410],{"class":409},[332,966,413],{"class":342},[332,968,969,971,973,975,977,979,982],{"class":334,"line":416},[332,970,419],{"class":342},[332,972,422],{"class":338},[332,974,425],{"class":338},[332,976,428],{"class":378},[332,978,400],{"class":342},[332,980,981],{"class":433},"\"Ejemplo de JComboBox\"",[332,983,437],{"class":342},[332,985,986,988,990,992,994],{"class":334,"line":440},[332,987,443],{"class":342},[332,989,422],{"class":338},[332,991,425],{"class":338},[332,993,450],{"class":378},[332,995,453],{"class":342},[332,997,998],{"class":334,"line":456},[332,999,459],{"class":342},[332,1001,1002,1005,1008,1010,1013,1015,1017,1019,1021,1024],{"class":334,"line":462},[332,1003,1004],{"class":338},"        String",[332,1006,1007],{"class":342},"[] options ",[332,1009,422],{"class":338},[332,1011,1012],{"class":342}," {",[332,1014,477],{"class":433},[332,1016,558],{"class":342},[332,1018,496],{"class":433},[332,1020,558],{"class":342},[332,1022,1023],{"class":433},"\"Opción 3\"",[332,1025,1026],{"class":342},"};\n",[332,1028,1029,1032,1034,1037,1039,1041],{"class":334,"line":482},[332,1030,1031],{"class":342},"        JComboBox\u003C",[332,1033,403],{"class":338},[332,1035,1036],{"class":342},"> comboBox ",[332,1038,422],{"class":338},[332,1040,425],{"class":338},[332,1042,1043],{"class":342}," JComboBox\u003C>(options);\n",[332,1045,1046],{"class":334,"line":501},[332,1047,459],{"class":342},[332,1049,1050,1052,1054],{"class":334,"line":506},[332,1051,509],{"class":342},[332,1053,512],{"class":378},[332,1055,1056],{"class":342},"(comboBox);\n",[332,1058,1059],{"class":334,"line":518},[332,1060,459],{"class":342},[332,1062,1063,1065,1067],{"class":334,"line":528},[332,1064,536],{"class":342},[332,1066,512],{"class":378},[332,1068,541],{"class":342},[332,1070,1071,1073,1075,1077,1079,1081,1083],{"class":334,"line":533},[332,1072,536],{"class":342},[332,1074,549],{"class":378},[332,1076,400],{"class":342},[332,1078,555],{"class":554},[332,1080,558],{"class":342},[332,1082,561],{"class":554},[332,1084,437],{"class":342},[332,1086,1087,1089,1091],{"class":334,"line":544},[332,1088,536],{"class":342},[332,1090,571],{"class":378},[332,1092,574],{"class":342},[332,1094,1095,1097,1099,1101,1103],{"class":334,"line":566},[332,1096,536],{"class":342},[332,1098,582],{"class":378},[332,1100,400],{"class":342},[332,1102,587],{"class":554},[332,1104,437],{"class":342},[332,1106,1107],{"class":334,"line":577},[332,1108,595],{"class":342},[332,1110,1111],{"class":334,"line":592},[332,1112,601],{"class":342},[304,1114,1115,1116,1118],{},"En este ejemplo, hemos creado un ",[316,1117,900],{}," con tres opciones que el usuario puede seleccionar.",[304,1120,1121,1122,1124,1125,1128],{},"Si bien en el ejemplo anterior las opciones son cadenas de texto, también es posible utilizar objetos personalizados como elementos del ",[316,1123,900],{},". Para ello, debes sobrescribir el método ",[316,1126,1127],{},"toString()"," en la clase del objeto para definir cómo se mostrará en la lista desplegable.",[308,1130,1132],{"id":1131},"jprogressbar","JProgressBar",[304,1134,314,1135,1137,1138,321],{},[316,1136,1132],{}," se utiliza para mostrar el progreso de una tarea en curso. Puede ser útil para indicar al usuario cuánto tiempo falta para completar una operación. Aquí tienes un ejemplo de cómo crear y utilizar un ",[316,1139,1132],{},[323,1141,1143],{"className":325,"code":1142,"language":327,"meta":328,"style":328},"import javax.swing.JFrame;\nimport javax.swing.JPanel;\nimport javax.swing.JProgressBar;\n\npublic class JProgressBarExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JProgressBar\");\n        JPanel panel = new JPanel();\n        \n        JProgressBar progressBar = new JProgressBar(0, 100);\n        progressBar.setValue(50); \u002F\u002F Establecer el valor actual del progreso\n        progressBar.setStringPainted(true); \u002F\u002F Mostrar el porcentaje\n        \n        panel.add(progressBar);\n        \n        frame.add(panel);\n        frame.setSize(300, 200);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,1144,1145,1151,1157,1164,1168,1179,1199,1216,1228,1232,1256,1276,1292,1296,1305,1309,1317,1333,1341,1353,1357],{"__ignoreMap":328},[332,1146,1147,1149],{"class":334,"line":335},[332,1148,339],{"class":338},[332,1150,351],{"class":342},[332,1152,1153,1155],{"class":334,"line":346},[332,1154,339],{"class":338},[332,1156,359],{"class":342},[332,1158,1159,1161],{"class":334,"line":354},[332,1160,339],{"class":338},[332,1162,1163],{"class":342}," javax.swing.JProgressBar;\n",[332,1165,1166],{"class":334,"line":362},[332,1167,366],{"emptyLinePlaceholder":365},[332,1169,1170,1172,1174,1177],{"class":334,"line":369},[332,1171,372],{"class":338},[332,1173,375],{"class":338},[332,1175,1176],{"class":378}," JProgressBarExample",[332,1178,382],{"class":342},[332,1180,1181,1183,1185,1187,1189,1191,1193,1195,1197],{"class":334,"line":385},[332,1182,388],{"class":338},[332,1184,391],{"class":338},[332,1186,394],{"class":338},[332,1188,397],{"class":378},[332,1190,400],{"class":342},[332,1192,403],{"class":338},[332,1194,406],{"class":342},[332,1196,410],{"class":409},[332,1198,413],{"class":342},[332,1200,1201,1203,1205,1207,1209,1211,1214],{"class":334,"line":416},[332,1202,419],{"class":342},[332,1204,422],{"class":338},[332,1206,425],{"class":338},[332,1208,428],{"class":378},[332,1210,400],{"class":342},[332,1212,1213],{"class":433},"\"Ejemplo de JProgressBar\"",[332,1215,437],{"class":342},[332,1217,1218,1220,1222,1224,1226],{"class":334,"line":440},[332,1219,443],{"class":342},[332,1221,422],{"class":338},[332,1223,425],{"class":338},[332,1225,450],{"class":378},[332,1227,453],{"class":342},[332,1229,1230],{"class":334,"line":456},[332,1231,459],{"class":342},[332,1233,1234,1237,1239,1241,1244,1246,1249,1251,1254],{"class":334,"line":462},[332,1235,1236],{"class":342},"        JProgressBar progressBar ",[332,1238,422],{"class":338},[332,1240,425],{"class":338},[332,1242,1243],{"class":378}," JProgressBar",[332,1245,400],{"class":342},[332,1247,1248],{"class":554},"0",[332,1250,558],{"class":342},[332,1252,1253],{"class":554},"100",[332,1255,437],{"class":342},[332,1257,1258,1261,1264,1266,1269,1272],{"class":334,"line":482},[332,1259,1260],{"class":342},"        progressBar.",[332,1262,1263],{"class":378},"setValue",[332,1265,400],{"class":342},[332,1267,1268],{"class":554},"50",[332,1270,1271],{"class":342},"); ",[332,1273,1275],{"class":1274},"sAwPA","\u002F\u002F Establecer el valor actual del progreso\n",[332,1277,1278,1280,1283,1285,1287,1289],{"class":334,"line":501},[332,1279,1260],{"class":342},[332,1281,1282],{"class":378},"setStringPainted",[332,1284,400],{"class":342},[332,1286,587],{"class":554},[332,1288,1271],{"class":342},[332,1290,1291],{"class":1274},"\u002F\u002F Mostrar el porcentaje\n",[332,1293,1294],{"class":334,"line":506},[332,1295,459],{"class":342},[332,1297,1298,1300,1302],{"class":334,"line":518},[332,1299,509],{"class":342},[332,1301,512],{"class":378},[332,1303,1304],{"class":342},"(progressBar);\n",[332,1306,1307],{"class":334,"line":528},[332,1308,459],{"class":342},[332,1310,1311,1313,1315],{"class":334,"line":533},[332,1312,536],{"class":342},[332,1314,512],{"class":378},[332,1316,541],{"class":342},[332,1318,1319,1321,1323,1325,1327,1329,1331],{"class":334,"line":544},[332,1320,536],{"class":342},[332,1322,549],{"class":378},[332,1324,400],{"class":342},[332,1326,555],{"class":554},[332,1328,558],{"class":342},[332,1330,561],{"class":554},[332,1332,437],{"class":342},[332,1334,1335,1337,1339],{"class":334,"line":566},[332,1336,536],{"class":342},[332,1338,571],{"class":378},[332,1340,574],{"class":342},[332,1342,1343,1345,1347,1349,1351],{"class":334,"line":577},[332,1344,536],{"class":342},[332,1346,582],{"class":378},[332,1348,400],{"class":342},[332,1350,587],{"class":554},[332,1352,437],{"class":342},[332,1354,1355],{"class":334,"line":592},[332,1356,595],{"class":342},[332,1358,1359],{"class":334,"line":598},[332,1360,601],{"class":342},[304,1362,1363],{},"En este ejemplo, hemos creado una barra de progreso que muestra un progreso del 50%. Puedes actualizar el valor de la barra de progreso dinámicamente a medida que avanza la tarea.",[308,1365,1367],{"id":1366},"jtogglebutton","JToggleButton",[304,1369,314,1370,1372,1373,321],{},[316,1371,1367],{}," es un botón que puede estar en dos estados: seleccionado o no seleccionado. Es útil para representar opciones que pueden activarse o desactivarse. Aquí tienes un ejemplo de cómo crear y utilizar un ",[316,1374,1367],{},[323,1376,1378],{"className":325,"code":1377,"language":327,"meta":328,"style":328},"import javax.swing.JFrame;\nimport javax.swing.JPanel;\nimport javax.swing.JToggleButton;\n\npublic class JToggleButtonExample {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de JToggleButton\");\n        JPanel panel = new JPanel();\n        \n        JToggleButton toggleButton = new JToggleButton(\"Activar\u002FDesactivar\");\n        \n        panel.add(toggleButton);\n        \n        frame.add(panel);\n        frame.setSize(300, 200);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n",[316,1379,1380,1386,1392,1399,1403,1414,1434,1451,1463,1467,1486,1490,1499,1503,1511,1527,1535,1547,1551],{"__ignoreMap":328},[332,1381,1382,1384],{"class":334,"line":335},[332,1383,339],{"class":338},[332,1385,351],{"class":342},[332,1387,1388,1390],{"class":334,"line":346},[332,1389,339],{"class":338},[332,1391,359],{"class":342},[332,1393,1394,1396],{"class":334,"line":354},[332,1395,339],{"class":338},[332,1397,1398],{"class":342}," javax.swing.JToggleButton;\n",[332,1400,1401],{"class":334,"line":362},[332,1402,366],{"emptyLinePlaceholder":365},[332,1404,1405,1407,1409,1412],{"class":334,"line":369},[332,1406,372],{"class":338},[332,1408,375],{"class":338},[332,1410,1411],{"class":378}," JToggleButtonExample",[332,1413,382],{"class":342},[332,1415,1416,1418,1420,1422,1424,1426,1428,1430,1432],{"class":334,"line":385},[332,1417,388],{"class":338},[332,1419,391],{"class":338},[332,1421,394],{"class":338},[332,1423,397],{"class":378},[332,1425,400],{"class":342},[332,1427,403],{"class":338},[332,1429,406],{"class":342},[332,1431,410],{"class":409},[332,1433,413],{"class":342},[332,1435,1436,1438,1440,1442,1444,1446,1449],{"class":334,"line":416},[332,1437,419],{"class":342},[332,1439,422],{"class":338},[332,1441,425],{"class":338},[332,1443,428],{"class":378},[332,1445,400],{"class":342},[332,1447,1448],{"class":433},"\"Ejemplo de JToggleButton\"",[332,1450,437],{"class":342},[332,1452,1453,1455,1457,1459,1461],{"class":334,"line":440},[332,1454,443],{"class":342},[332,1456,422],{"class":338},[332,1458,425],{"class":338},[332,1460,450],{"class":378},[332,1462,453],{"class":342},[332,1464,1465],{"class":334,"line":456},[332,1466,459],{"class":342},[332,1468,1469,1472,1474,1476,1479,1481,1484],{"class":334,"line":462},[332,1470,1471],{"class":342},"        JToggleButton toggleButton ",[332,1473,422],{"class":338},[332,1475,425],{"class":338},[332,1477,1478],{"class":378}," JToggleButton",[332,1480,400],{"class":342},[332,1482,1483],{"class":433},"\"Activar\u002FDesactivar\"",[332,1485,437],{"class":342},[332,1487,1488],{"class":334,"line":482},[332,1489,459],{"class":342},[332,1491,1492,1494,1496],{"class":334,"line":501},[332,1493,509],{"class":342},[332,1495,512],{"class":378},[332,1497,1498],{"class":342},"(toggleButton);\n",[332,1500,1501],{"class":334,"line":506},[332,1502,459],{"class":342},[332,1504,1505,1507,1509],{"class":334,"line":518},[332,1506,536],{"class":342},[332,1508,512],{"class":378},[332,1510,541],{"class":342},[332,1512,1513,1515,1517,1519,1521,1523,1525],{"class":334,"line":528},[332,1514,536],{"class":342},[332,1516,549],{"class":378},[332,1518,400],{"class":342},[332,1520,555],{"class":554},[332,1522,558],{"class":342},[332,1524,561],{"class":554},[332,1526,437],{"class":342},[332,1528,1529,1531,1533],{"class":334,"line":533},[332,1530,536],{"class":342},[332,1532,571],{"class":378},[332,1534,574],{"class":342},[332,1536,1537,1539,1541,1543,1545],{"class":334,"line":544},[332,1538,536],{"class":342},[332,1540,582],{"class":378},[332,1542,400],{"class":342},[332,1544,587],{"class":554},[332,1546,437],{"class":342},[332,1548,1549],{"class":334,"line":566},[332,1550,595],{"class":342},[332,1552,1553],{"class":334,"line":577},[332,1554,601],{"class":342},[304,1556,1115,1557,1559,1560,1562],{},[316,1558,1367],{}," que los usuarios pueden activar o desactivar. Por defecto, el botón no está seleccionado así que al hacer clic en él, cambiará su estado y apariencia. Por consiguiente, puedes agregar un ",[316,1561,613],{}," para manejar eventos cuando el estado del botón cambia.",[308,1564,1566],{"id":1565},"otros-elementos-de-control","Otros elementos de control",[304,1568,1569],{},"Además de los controles mencionados anteriormente, Swing ofrece una variedad de otros elementos de control que puedes utilizar para mejorar la interactividad de tu aplicación. Algunos de estos incluyen:",[1571,1572,1573,1580,1586,1592],"ul",{},[1574,1575,1576,1579],"li",{},[316,1577,1578],{},"JSlider",": Permite a los usuarios seleccionar un valor dentro de un rango mediante un control deslizante.",[1574,1581,1582,1585],{},[316,1583,1584],{},"JSpinner",": Proporciona un campo de entrada que permite a los usuarios seleccionar un valor mediante botones de incremento y decremento.",[1574,1587,1588,1591],{},[316,1589,1590],{},"JList",": Muestra una lista de elementos de los cuales el usuario puede seleccionar uno o varios.",[1574,1593,1594,1597],{},[316,1595,1596],{},"JTable",": Permite mostrar y editar datos en una tabla con filas y columnas.",[1599,1600,1601],"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":328,"searchDepth":346,"depth":346,"links":1603},[1604,1605,1606,1607,1608,1609],{"id":310,"depth":346,"text":311},{"id":624,"depth":346,"text":625},{"id":899,"depth":346,"text":900},{"id":1131,"depth":346,"text":1132},{"id":1366,"depth":346,"text":1367},{"id":1565,"depth":346,"text":1566},"Aprende a utilizar controles comunes en Java Swing como botones, etiquetas y campos de texto.","md",null,{"editButton":104},{"icon":25},{"title":59,"description":1610},"aCOPjmFx7IrMgA8CKVbv4uhX3u04jRQ_lBxZSKrzOqw",[1618,1620],{"title":55,"path":56,"stem":57,"description":1619,"icon":25,"children":-1},"Aprende a manejar eventos en aplicaciones Swing utilizando ActionListener y otros listeners.",{"title":63,"path":64,"stem":65,"description":1621,"icon":25,"children":-1},"Aprende sobre los atributos comunes que puedes configurar en los componentes de diseño de Swing.",1775101370648]