[{"data":1,"prerenderedAt":1021},["ShallowReactive",2],{"navigation_docs":3,"-archivos-ui-delegadores":412,"-archivos-ui-delegadores-surround":1016},[4,18,43,118,160,200,231,320,346],{"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,"icon":20,"path":21,"stem":22,"children":23,"page":42},"Entorno de desarrollo","i-codicon-edit-code","\u002Fide","2.ide",[24,28,33,37],{"title":25,"path":26,"stem":27,"icon":20},"¿Qué es un IDE?","\u002Fide\u002Fentorno","2.ide\u002F1.entorno",{"title":29,"path":30,"stem":31,"icon":32},"Estructura de un Proyecto","\u002Fide\u002Festructura","2.ide\u002F2.estructura","i-clarity-tree-view-line",{"title":34,"path":35,"stem":36,"icon":20},"La compilación en un IDE","\u002Fide\u002Fcompilacion","2.ide\u002F3.compilacion",{"title":38,"path":39,"stem":40,"icon":41},"Depuración de Código","\u002Fide\u002Fdepurar","2.ide\u002F4.depurar","i-lucide-bug",false,{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":42},"Clases y Objetos","i-catppuccin-java-class","\u002Fclases-objetos","3.clases-objetos",[49,53,57,62,66,70,74,78,83,88,92,96,101,106,110,114],{"title":50,"path":51,"stem":52},"Repaso previo a Clases y Objetos","\u002Fclases-objetos\u002Fpreview","3.clases-objetos\u002F00.preview",{"title":54,"path":55,"stem":56,"icon":45},"¿Qué es la Programación Orientada a Objetos (POO)?","\u002Fclases-objetos\u002Fpoo","3.clases-objetos\u002F01.poo",{"title":58,"path":59,"stem":60,"icon":61},"Diagramas de Clases y Objetos","\u002Fclases-objetos\u002Fdiagramas","3.clases-objetos\u002F02.diagramas","i-devicon-uml",{"title":63,"path":64,"stem":65,"icon":45},"Las Clases","\u002Fclases-objetos\u002Fclases","3.clases-objetos\u002F03.clases",{"title":67,"path":68,"stem":69,"icon":45},"Ámbito y Visibilidad","\u002Fclases-objetos\u002Fambito","3.clases-objetos\u002F04.ambito",{"title":71,"path":72,"stem":73,"icon":45},"Declaración e Instanciación de Objetos","\u002Fclases-objetos\u002Fobjetos","3.clases-objetos\u002F05.objetos",{"title":75,"path":76,"stem":77,"icon":45},"Clases Predefinidas en Java","\u002Fclases-objetos\u002Fpredefinidas","3.clases-objetos\u002F06.predefinidas",{"title":79,"path":80,"stem":81,"icon":82},"Paquetes en Java","\u002Fclases-objetos\u002Fpaquetes","3.clases-objetos\u002F07.paquetes","i-material-icon-theme-folder-java-open",{"title":84,"path":85,"stem":86,"icon":87},"Las Excepciones","\u002Fclases-objetos\u002Fexcepciones","3.clases-objetos\u002F08.excepciones","i-catppuccin-java-exception",{"title":89,"path":90,"stem":91,"icon":45},"La clase JOptionPane","\u002Fclases-objetos\u002Fjoptionpane","3.clases-objetos\u002F09.joptionpane",{"title":93,"path":94,"stem":95,"icon":45},"Constructores y Accesores","\u002Fclases-objetos\u002Fconstructores","3.clases-objetos\u002F10.constructores",{"title":97,"path":98,"stem":99,"icon":100},"Tipos Enumerados (Enums)","\u002Fclases-objetos\u002Fenumerados","3.clases-objetos\u002F11.enumerados","i-catppuccin-java-enum",{"title":102,"path":103,"stem":104,"icon":105},"Modificadores de acceso static y final","\u002Fclases-objetos\u002Fmodificadores","3.clases-objetos\u002F12.modificadores","i-mdi-chart-box",{"title":107,"path":108,"stem":109,"icon":105},"El casting en Java","\u002Fclases-objetos\u002Fcasting","3.clases-objetos\u002F13.casting",{"title":111,"path":112,"stem":113},"Las Expresiones Regulares","\u002Fclases-objetos\u002Fexpresiones-regulares","3.clases-objetos\u002F14.expresiones-regulares",{"title":115,"path":116,"stem":117,"icon":105},"Clases Genéricas en Java","\u002Fclases-objetos\u002Fclases-genericas","3.clases-objetos\u002F15.clases-genericas",{"title":119,"icon":120,"path":121,"stem":122,"children":123,"page":42},"Funciones (Métodos)","i-material-symbols-function","\u002Fmetodos","4.metodos",[124,128,132,136,140,144,148,152,156],{"title":125,"path":126,"stem":127},"Funciones Genéricas","\u002Fmetodos\u002Ffuncion-generica","4.metodos\u002F01.funcion-generica",{"title":129,"path":130,"stem":131},"Métodos de Instancia y de Clase","\u002Fmetodos\u002Finstancia-clase","4.metodos\u002F02.instancia-clase",{"title":133,"path":134,"stem":135},"Sobrecarga de Funciones","\u002Fmetodos\u002Fsobrecarga","4.metodos\u002F03.sobrecarga",{"title":137,"path":138,"stem":139},"Alcance de Variables y Métodos","\u002Fmetodos\u002Falcance","4.metodos\u002F04.alcance",{"title":141,"path":142,"stem":143},"Recursividad","\u002Fmetodos\u002Frecursividad","4.metodos\u002F05.recursividad",{"title":145,"path":146,"stem":147},"Puntero this","\u002Fmetodos\u002Fthis","4.metodos\u002F06.this",{"title":149,"path":150,"stem":151},"Los argumentos variables (varargs)","\u002Fmetodos\u002Fvarargs","4.metodos\u002F07.varargs",{"title":153,"path":154,"stem":155},"La clase Arrays","\u002Fmetodos\u002Farrays","4.metodos\u002F08.arrays",{"title":157,"path":158,"stem":159},"Predicados Simples y Compuestos en Java","\u002Fmetodos\u002Fpredicados","4.metodos\u002F09.predicados",{"title":161,"path":162,"stem":163,"children":164,"icon":199},"Herencia","\u002Fherencia","5.herencia\u002F01.index",[165,167,171,175,179,183,187,191,195],{"title":166,"path":162,"stem":163},"¿Qué es la herencia?",{"title":168,"path":169,"stem":170},"Sobreescritura de métodos y uso de `super`","\u002Fherencia\u002Fsobeescritura","5.herencia\u002F02.sobeescritura",{"title":172,"path":173,"stem":174},"Tipos de herencia","\u002Fherencia\u002Ftipos-herencia","5.herencia\u002F03.tipos-herencia",{"title":176,"path":177,"stem":178},"La clase Object en Java","\u002Fherencia\u002Fobject","5.herencia\u002F04.object",{"title":180,"path":181,"stem":182},"Polimorfismo","\u002Fherencia\u002Fpolimorfismo","5.herencia\u002F05.polimorfismo",{"title":184,"path":185,"stem":186},"Clases y Funciones Abstractas","\u002Fherencia\u002Fabstract","5.herencia\u002F06.abstract",{"title":188,"path":189,"stem":190},"Interfaces","\u002Fherencia\u002Finterfaces","5.herencia\u002F07.interfaces",{"title":192,"path":193,"stem":194},"Funciones e Interfaces","\u002Fherencia\u002Ffunciones-interfaces","5.herencia\u002F08.funciones-interfaces",{"title":196,"path":197,"stem":198},"Interfaces y Funciones Lambda","\u002Fherencia\u002Flambda-interface","5.herencia\u002F09.lambda-interface","i-material-symbols-heritage",{"title":201,"path":202,"stem":203,"children":204,"icon":199},"Arreglos","\u002Farreglos","6.arreglos\u002F01.index",[205,207,211,215,219,223,227],{"title":206,"path":202,"stem":203},"Los arreglos en Java",{"title":208,"path":209,"stem":210},"Los arreglos","\u002Farreglos\u002Farray","6.arreglos\u002F02.array",{"title":212,"path":213,"stem":214},"Matrices","\u002Farreglos\u002Fmatrices","6.arreglos\u002F03.matrices",{"title":216,"path":217,"stem":218},"Comparadores","\u002Farreglos\u002Fcomparator","6.arreglos\u002F04.comparator",{"title":220,"path":221,"stem":222},"Arreglos dinámicos: ArrayList","\u002Farreglos\u002Farraylist","6.arreglos\u002F05.arraylist",{"title":224,"path":225,"stem":226},"Arreglos Relacionales: HashMap","\u002Farreglos\u002Fhashmap","6.arreglos\u002F06.hashmap",{"title":228,"path":229,"stem":230},"La clase Stream en Java","\u002Farreglos\u002Fstream","6.arreglos\u002F07.stream",{"title":232,"icon":199,"path":233,"stem":234,"children":235,"page":42},"Archivos e Interfaz de Usuario","\u002Farchivos-ui","7.archivos-ui",[236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316],{"title":237,"path":238,"stem":239},"El paquete Swing","\u002Farchivos-ui\u002Fswing","7.archivos-ui\u002F01.swing",{"title":241,"path":242,"stem":243},"La clase JFrame y el JPanel","\u002Farchivos-ui\u002Fjpanel","7.archivos-ui\u002F02.jpanel",{"title":245,"path":246,"stem":247},"Los Layouts en Swing","\u002Farchivos-ui\u002Flayout","7.archivos-ui\u002F03.layout",{"title":249,"path":250,"stem":251},"Iniciando con Swing","\u002Farchivos-ui\u002Finiciando","7.archivos-ui\u002F04.iniciando",{"title":253,"path":254,"stem":255},"Las clases Color y Font en Swing","\u002Farchivos-ui\u002Fcolor-font","7.archivos-ui\u002F05.color-font",{"title":257,"path":258,"stem":259},"Etiquetas en Swing","\u002Farchivos-ui\u002Fetiquetas","7.archivos-ui\u002F06.etiquetas",{"title":261,"path":262,"stem":263},"Personalizando la apariencia de los componentes en Swing","\u002Farchivos-ui\u002Fpersonalizando","7.archivos-ui\u002F07.personalizando",{"title":265,"path":266,"stem":267},"Sobrescribiendo el método drawComponent() en Swing","\u002Farchivos-ui\u002Fdraw","7.archivos-ui\u002F08.draw",{"title":269,"path":270,"stem":271},"Manejando eventos en Swing","\u002Farchivos-ui\u002Feventos","7.archivos-ui\u002F09.eventos",{"title":273,"path":274,"stem":275},"Personalización de Componentes mediante la Extensión de Clases en Swing","\u002Farchivos-ui\u002Fextends-component","7.archivos-ui\u002F10.extends-component",{"title":277,"path":278,"stem":279},"Gradientes","\u002Farchivos-ui\u002Fgradientes","7.archivos-ui\u002F11.gradientes",{"title":281,"path":282,"stem":283},"Botones en Swing","\u002Farchivos-ui\u002Fbotones","7.archivos-ui\u002F12.botones",{"title":285,"path":286,"stem":287},"Los delegadores en Swing","\u002Farchivos-ui\u002Fdelegadores","7.archivos-ui\u002F13.delegadores",{"title":289,"path":290,"stem":291},"UI para nuestro RPG: Parte 1","\u002Farchivos-ui\u002Frpg-ui-1","7.archivos-ui\u002F14.rpg-ui-1",{"title":293,"path":294,"stem":295},"UI para nuestro RPG: Parte 2","\u002Farchivos-ui\u002Frpg-ui-2","7.archivos-ui\u002F15.rpg-ui-2",{"title":297,"path":298,"stem":299},"Los Streams Entrada y Salida","\u002Farchivos-ui\u002Fstreams","7.archivos-ui\u002F16.streams",{"title":301,"path":302,"stem":303},"Archivo tipo Objeto","\u002Farchivos-ui\u002Farchivo-objeto","7.archivos-ui\u002F17.archivo-objeto",{"title":305,"path":306,"stem":307},"UI para nuestro RPG: Parte 3","\u002Farchivos-ui\u002Frpg-ui-3","7.archivos-ui\u002F18.rpg-ui-3",{"title":309,"path":310,"stem":311},"UI para nuestro RPG: Parte 4","\u002Farchivos-ui\u002Frpg-ui-4","7.archivos-ui\u002F19.rpg-ui-4",{"title":313,"path":314,"stem":315},"UI para nuestro RPG: Parte 5","\u002Farchivos-ui\u002Frpg-ui-5","7.archivos-ui\u002F20.rpg-ui-5",{"title":317,"path":318,"stem":319},"UI para nuestro RPG: Parte 6","\u002Farchivos-ui\u002Frpg-ui-6","7.archivos-ui\u002F21.rpg-ui-6",{"title":321,"icon":322,"path":323,"stem":324,"children":325,"page":42},"Ejemplos","i-check-circle","\u002Fejemplos","8.ejemplos",[326,330,334,338,342],{"title":327,"path":328,"stem":329,"icon":105},"Ejemplo 1: Validando entradas con JOptionPane","\u002Fejemplos\u002Fejemplo-01","8.ejemplos\u002F01.ejemplo-01",{"title":331,"path":332,"stem":333},"Ejemplo 02: Uso de clases genéricas en Java","\u002Fejemplos\u002Fejemplo-02","8.ejemplos\u002F02.ejemplo-02",{"title":335,"path":336,"stem":337},"Ejemplo 03: Uso de Enum, Excepciones en Java","\u002Fejemplos\u002Fejemplo-03","8.ejemplos\u002F03.ejemplo-03",{"title":339,"path":340,"stem":341},"Ejemplo 4: Clase con funciones genéricas de validación","\u002Fejemplos\u002Fejemplo-04","8.ejemplos\u002F04.ejemplo-04",{"title":343,"path":344,"stem":345},"Ejemplo 5: Sistema de Gestión de Empleados","\u002Fejemplos\u002Fejemplo-05","8.ejemplos\u002F05.ejemplo-05",{"title":347,"icon":322,"path":348,"stem":349,"children":350,"page":42},"Actividades","\u002Factividades","9.actividades",[351,355,360,364,368,372,376,380,384,388,392,396,400,404,408],{"title":352,"path":353,"stem":354,"icon":105},"Actividad 1: Infografía sobre el proceso de compilación","\u002Factividades\u002Fact-01","9.actividades\u002F01.act-01",{"title":356,"path":357,"stem":358,"icon":359},"Actividad 2: Modelando Diagramas de Clases UML","\u002Factividades\u002Fact-02","9.actividades\u002F02.act-02","i-material-icon-theme-uml",{"title":361,"path":362,"stem":363,"icon":45},"Actividad 3: Creando Clases y Objetos en Java","\u002Factividades\u002Fact-03","9.actividades\u002F03.act-03",{"title":365,"path":366,"stem":367},"Actividad 4: Validando entradas de datos","\u002Factividades\u002Fact-04","9.actividades\u002F04.act-04",{"title":369,"path":370,"stem":371,"icon":105},"Actividad 5: Implementando una clase genérica","\u002Factividades\u002Fact-05","9.actividades\u002F05.act-05",{"title":373,"path":374,"stem":375,"icon":105},"Actividad 6: Expandiendo InputValidator con Predicados y Function","\u002Factividades\u002Fact-06","9.actividades\u002F06.act-06",{"title":377,"path":378,"stem":379,"icon":105},"Actividad 7: Gestor de Biblioteca con InputValidator","\u002Factividades\u002Fact-07","9.actividades\u002F07.act-07",{"title":381,"path":382,"stem":383,"icon":105},"Actividad 8: Calculadora de Figuras Geométricas","\u002Factividades\u002Fact-08","9.actividades\u002F08.act-08",{"title":385,"path":386,"stem":387,"icon":105},"Actividad 9: gestión de una empresa agroalimentaria","\u002Factividades\u002Fact-09","9.actividades\u002F09.act-09",{"title":389,"path":390,"stem":391,"icon":105},"Actividad 10: Sistema de gestión de clínicas veterinarias","\u002Factividades\u002Fact-10","9.actividades\u002F10.act-10",{"title":393,"path":394,"stem":395},"Definición de Proyecto Evolutivo","\u002Factividades\u002Frpg","9.actividades\u002F11.rpg",{"title":397,"path":398,"stem":399},"Actividad 11: Creación de Personajes","\u002Factividades\u002Fact-11","9.actividades\u002F12.act-11",{"title":401,"path":402,"stem":403},"Actividad 12: El Inventario y los Objetos","\u002Factividades\u002Fact-12","9.actividades\u002F13.act-12",{"title":405,"path":406,"stem":407},"Actividad 13: El combate por turnos","\u002Factividades\u002Fact-13","9.actividades\u002F14.act-13",{"title":409,"path":410,"stem":411},"Actividad 14: Guardando y Cargando","\u002Factividades\u002Fact-14","9.actividades\u002F15.act-14",{"id":413,"title":285,"body":414,"description":1010,"extension":1011,"links":1012,"meta":1013,"navigation":492,"path":286,"seo":1014,"stem":287,"__hash__":1015},"docs\u002F7.archivos-ui\u002F13.delegadores.md",{"type":415,"value":416,"toc":1004},"minimark",[417,422,426,430,438,700,718,721,907,913,917,920,990,993,997,1000],[418,419,421],"h2",{"id":420},"qué-es-un-delegador-en-swing","¿Qué es un delegador en Swing?",[423,424,425],"p",{},"Los delegadores en Swing son clases que se encargan de aplicar características visuales y de comportamiento a los componentes. Estos delegadores permiten personalizar la apariencia y el funcionamiento de los componentes sin necesidad de modificar su código fuente. En Swing, los delegadores se utilizan para manejar eventos, como clics de mouse, teclas presionadas, etc., y para aplicar estilos visuales a los componentes.",[418,427,429],{"id":428},"cómo-usar-delegadores-en-swing","Cómo usar delegadores en Swing",[423,431,432,433,437],{},"Para usar delegadores en Swing, debes crear una clase que extienda de ",[434,435,436],"code",{},"javax.swing.plaf.ComponentUI"," y luego registrar esta clase como el delegador para el componente que deseas personalizar. Aquí tienes un ejemplo básico de cómo crear un delegador para un botón:",[439,440,445],"pre",{"className":441,"code":442,"language":443,"meta":444,"style":444},"language-java shiki shiki-themes github-dark","import javax.swing.*;\nimport javax.swing.plaf.ComponentUI;\nimport java.awt.*;\n\npublic class CustomButtonUI extends ComponentUI {\n    @Override\n    public void paint(Graphics g, JComponent c) {\n        \u002F\u002F Personaliza la apariencia del botón aquí\n        g.setColor(Color.CYAN);\n        g.fillRect(0, 0, c.getWidth(), c.getHeight());\n        g.setColor(Color.RED);\n        g.drawString(\"Botón Personalizado\", 10, 20);\n    }\n\n    public static ComponentUI createUI(JComponent c) {\n        return new CustomButtonUI();\n    }\n}\n","java","",[434,446,447,467,475,487,494,516,525,553,560,572,606,616,643,649,654,675,689,694],{"__ignoreMap":444},[448,449,452,456,460,464],"span",{"class":450,"line":451},"line",1,[448,453,455],{"class":454},"snl16","import",[448,457,459],{"class":458},"s95oV"," javax.swing.",[448,461,463],{"class":462},"sDLfK","*",[448,465,466],{"class":458},";\n",[448,468,470,472],{"class":450,"line":469},2,[448,471,455],{"class":454},[448,473,474],{"class":458}," javax.swing.plaf.ComponentUI;\n",[448,476,478,480,483,485],{"class":450,"line":477},3,[448,479,455],{"class":454},[448,481,482],{"class":458}," java.awt.",[448,484,463],{"class":462},[448,486,466],{"class":458},[448,488,490],{"class":450,"line":489},4,[448,491,493],{"emptyLinePlaceholder":492},true,"\n",[448,495,497,500,503,507,510,513],{"class":450,"line":496},5,[448,498,499],{"class":454},"public",[448,501,502],{"class":454}," class",[448,504,506],{"class":505},"svObZ"," CustomButtonUI",[448,508,509],{"class":454}," extends",[448,511,512],{"class":505}," ComponentUI",[448,514,515],{"class":458}," {\n",[448,517,519,522],{"class":450,"line":518},6,[448,520,521],{"class":458},"    @",[448,523,524],{"class":454},"Override\n",[448,526,528,531,534,537,540,544,547,550],{"class":450,"line":527},7,[448,529,530],{"class":454},"    public",[448,532,533],{"class":454}," void",[448,535,536],{"class":505}," paint",[448,538,539],{"class":458},"(Graphics ",[448,541,543],{"class":542},"s9osk","g",[448,545,546],{"class":458},", JComponent ",[448,548,549],{"class":542},"c",[448,551,552],{"class":458},") {\n",[448,554,556],{"class":450,"line":555},8,[448,557,559],{"class":558},"sAwPA","        \u002F\u002F Personaliza la apariencia del botón aquí\n",[448,561,563,566,569],{"class":450,"line":562},9,[448,564,565],{"class":458},"        g.",[448,567,568],{"class":505},"setColor",[448,570,571],{"class":458},"(Color.CYAN);\n",[448,573,575,577,580,583,586,589,591,594,597,600,603],{"class":450,"line":574},10,[448,576,565],{"class":458},[448,578,579],{"class":505},"fillRect",[448,581,582],{"class":458},"(",[448,584,585],{"class":462},"0",[448,587,588],{"class":458},", ",[448,590,585],{"class":462},[448,592,593],{"class":458},", c.",[448,595,596],{"class":505},"getWidth",[448,598,599],{"class":458},"(), c.",[448,601,602],{"class":505},"getHeight",[448,604,605],{"class":458},"());\n",[448,607,609,611,613],{"class":450,"line":608},11,[448,610,565],{"class":458},[448,612,568],{"class":505},[448,614,615],{"class":458},"(Color.RED);\n",[448,617,619,621,624,626,630,632,635,637,640],{"class":450,"line":618},12,[448,620,565],{"class":458},[448,622,623],{"class":505},"drawString",[448,625,582],{"class":458},[448,627,629],{"class":628},"sU2Wk","\"Botón Personalizado\"",[448,631,588],{"class":458},[448,633,634],{"class":462},"10",[448,636,588],{"class":458},[448,638,639],{"class":462},"20",[448,641,642],{"class":458},");\n",[448,644,646],{"class":450,"line":645},13,[448,647,648],{"class":458},"    }\n",[448,650,652],{"class":450,"line":651},14,[448,653,493],{"emptyLinePlaceholder":492},[448,655,657,659,662,665,668,671,673],{"class":450,"line":656},15,[448,658,530],{"class":454},[448,660,661],{"class":454}," static",[448,663,664],{"class":458}," ComponentUI ",[448,666,667],{"class":505},"createUI",[448,669,670],{"class":458},"(JComponent ",[448,672,549],{"class":542},[448,674,552],{"class":458},[448,676,678,681,684,686],{"class":450,"line":677},16,[448,679,680],{"class":454},"        return",[448,682,683],{"class":454}," new",[448,685,506],{"class":505},[448,687,688],{"class":458},"();\n",[448,690,692],{"class":450,"line":691},17,[448,693,648],{"class":458},[448,695,697],{"class":450,"line":696},18,[448,698,699],{"class":458},"}\n",[423,701,702,703,706,707,710,711,714,715,717],{},"En este ejemplo, hemos creado una clase ",[434,704,705],{},"CustomButtonUI"," que extiende de ",[434,708,709],{},"ComponentUI",". En el método ",[434,712,713],{},"paint",", personalizamos la apariencia del botón dibujando un fondo cyan y un texto rojo. Luego, en el método ",[434,716,667],{},", devolvemos una nueva instancia de nuestro delegador.",[423,719,720],{},"Para registrar este delegador para un botón, puedes usar el siguiente código:",[439,722,724],{"className":441,"code":723,"language":443,"meta":444,"style":444},"import javax.swing.*;  \nimport javax.swing.plaf.ComponentUI;\n\npublic class Main {\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Ejemplo de Delegador\");\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(300, 200);\n\n        JButton button = new JButton();\n        button.setUI(new CustomButtonUI()); \u002F\u002F Registrar el delegador para el botón\n\n        frame.add(button);\n        frame.setVisible(true);\n    }\n}\n",[434,725,726,737,743,747,758,782,802,813,832,836,850,871,875,885,899,903],{"__ignoreMap":444},[448,727,728,730,732,734],{"class":450,"line":451},[448,729,455],{"class":454},[448,731,459],{"class":458},[448,733,463],{"class":462},[448,735,736],{"class":458},";  \n",[448,738,739,741],{"class":450,"line":469},[448,740,455],{"class":454},[448,742,474],{"class":458},[448,744,745],{"class":450,"line":477},[448,746,493],{"emptyLinePlaceholder":492},[448,748,749,751,753,756],{"class":450,"line":489},[448,750,499],{"class":454},[448,752,502],{"class":454},[448,754,755],{"class":505}," Main",[448,757,515],{"class":458},[448,759,760,762,764,766,769,771,774,777,780],{"class":450,"line":496},[448,761,530],{"class":454},[448,763,661],{"class":454},[448,765,533],{"class":454},[448,767,768],{"class":505}," main",[448,770,582],{"class":458},[448,772,773],{"class":454},"String",[448,775,776],{"class":458},"[] ",[448,778,779],{"class":542},"args",[448,781,552],{"class":458},[448,783,784,787,790,792,795,797,800],{"class":450,"line":518},[448,785,786],{"class":458},"        JFrame frame ",[448,788,789],{"class":454},"=",[448,791,683],{"class":454},[448,793,794],{"class":505}," JFrame",[448,796,582],{"class":458},[448,798,799],{"class":628},"\"Ejemplo de Delegador\"",[448,801,642],{"class":458},[448,803,804,807,810],{"class":450,"line":527},[448,805,806],{"class":458},"        frame.",[448,808,809],{"class":505},"setDefaultCloseOperation",[448,811,812],{"class":458},"(JFrame.EXIT_ON_CLOSE);\n",[448,814,815,817,820,822,825,827,830],{"class":450,"line":555},[448,816,806],{"class":458},[448,818,819],{"class":505},"setSize",[448,821,582],{"class":458},[448,823,824],{"class":462},"300",[448,826,588],{"class":458},[448,828,829],{"class":462},"200",[448,831,642],{"class":458},[448,833,834],{"class":450,"line":562},[448,835,493],{"emptyLinePlaceholder":492},[448,837,838,841,843,845,848],{"class":450,"line":574},[448,839,840],{"class":458},"        JButton button ",[448,842,789],{"class":454},[448,844,683],{"class":454},[448,846,847],{"class":505}," JButton",[448,849,688],{"class":458},[448,851,852,855,858,860,863,865,868],{"class":450,"line":608},[448,853,854],{"class":458},"        button.",[448,856,857],{"class":505},"setUI",[448,859,582],{"class":458},[448,861,862],{"class":454},"new",[448,864,506],{"class":505},[448,866,867],{"class":458},"()); ",[448,869,870],{"class":558},"\u002F\u002F Registrar el delegador para el botón\n",[448,872,873],{"class":450,"line":618},[448,874,493],{"emptyLinePlaceholder":492},[448,876,877,879,882],{"class":450,"line":645},[448,878,806],{"class":458},[448,880,881],{"class":505},"add",[448,883,884],{"class":458},"(button);\n",[448,886,887,889,892,894,897],{"class":450,"line":651},[448,888,806],{"class":458},[448,890,891],{"class":505},"setVisible",[448,893,582],{"class":458},[448,895,896],{"class":462},"true",[448,898,642],{"class":458},[448,900,901],{"class":450,"line":656},[448,902,648],{"class":458},[448,904,905],{"class":450,"line":677},[448,906,699],{"class":458},[423,908,909,910,912],{},"En este código, creamos un botón y luego registramos nuestro delegador personalizado usando el método ",[434,911,857],{},". Al ejecutar este código, verás un botón con la apariencia personalizada definida en el delegador.",[418,914,916],{"id":915},"tipos-de-delegadores-en-swing","Tipos de Delegadores en Swing",[423,918,919],{},"En Swing, existen varios tipos de delegadores que puedes usar para personalizar diferentes aspectos de los componentes. Algunos de los delegadores más comunes incluyen:",[921,922,923,930,936,942,948,954,960,966,972,978,984],"ul",{},[924,925,926,929],"li",{},[434,927,928],{},"BasicButtonUI",": Delegador para botones.",[924,931,932,935],{},[434,933,934],{},"BasicLabelUI",": Delegador para etiquetas.",[924,937,938,941],{},[434,939,940],{},"BasicTextFieldUI",": Delegador para campos de texto.",[924,943,944,947],{},[434,945,946],{},"BasicComboBoxUI",": Delegador para cajas de combinación.",[924,949,950,953],{},[434,951,952],{},"BasicMenuUI",": Delegador para menús.",[924,955,956,959],{},[434,957,958],{},"BasicTableUI",": Delegador para tablas.",[924,961,962,965],{},[434,963,964],{},"BasicTreeUI",": Delegador para árboles.",[924,967,968,971],{},[434,969,970],{},"BasicScrollBarUI",": Delegador para barras de desplazamiento.",[924,973,974,977],{},[434,975,976],{},"BasicTabbedPaneUI",": Delegador para paneles con pestañas.",[924,979,980,983],{},[434,981,982],{},"BasicToolBarUI",": Delegador para barras de herramientas.",[924,985,986,989],{},[434,987,988],{},"BasicProgressBarUI",": Delegador para barras de progreso.",[423,991,992],{},"Entre otros. Cada uno de estos delegadores se encarga de manejar la apariencia y el comportamiento de su respectivo componente, lo que te permite personalizar tu interfaz de usuario de manera efectiva.",[418,994,996],{"id":995},"conclusión","Conclusión",[423,998,999],{},"Los delegadores en Swing son una herramienta poderosa para personalizar la apariencia y el comportamiento de los componentes sin necesidad de modificar su código fuente. Al crear y registrar delegadores personalizados, puedes mejorar la interacción y la estética de tus interfaces de usuario, haciendo que tus aplicaciones sean más atractivas y fáciles de usar. Experimenta con diferentes delegadores y personalizaciones para encontrar el estilo que mejor se adapte a tu aplicación. Recuerda que el uso de delegadores puede afectar el rendimiento de tu aplicación, así que úsalos con moderación para mantener una buena experiencia de usuario.",[1001,1002,1003],"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 .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":444,"searchDepth":469,"depth":469,"links":1005},[1006,1007,1008,1009],{"id":420,"depth":469,"text":421},{"id":428,"depth":469,"text":429},{"id":915,"depth":469,"text":916},{"id":995,"depth":469,"text":996},"Cómo usar delegadores en Swing para manejar eventos y mejorar la interacción de tus interfaces.","md",null,{"editButton":42},{"title":285,"description":1010},"rGTiuAMu64dgPpsMimhvU-xWMCx-fB6_IS54VslBUnY",[1017,1019],{"title":281,"path":282,"stem":283,"description":1018,"children":-1},"Cómo crear y personalizar botones en Swing para mejorar la interacción de tus interfaces.",{"title":289,"path":290,"stem":291,"description":1020,"children":-1},"En esta sección comenzaremos a diseñar la interfaz gráfica de nuestro RPG utilizando Swing, creando una ventana principal y los componentes básicos para la gestión de personajes.",1779479575391]