[{"data":1,"prerenderedAt":4117},["ShallowReactive",2],{"navigation_docs":3,"-archivos-ui-rpg-ui-4":412,"-archivos-ui-rpg-ui-4-surround":4112},[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":309,"body":414,"description":4106,"extension":4107,"links":4108,"meta":4109,"navigation":476,"path":310,"seo":4110,"stem":311,"__hash__":4111},"docs\u002F7.archivos-ui\u002F19.rpg-ui-4.md",{"type":415,"value":416,"toc":4099},"minimark",[417,422,426,430,438,443,446,449,714,947,950,953,2500,2503,2506,3140,3143,3146,3537,3540,3543,4088,4092,4095],[418,419,421],"h2",{"id":420},"componentes-extras-para-la-ui-de-nuestro-rpg","Componentes extras para la UI de nuestro RPG",[423,424,425],"p",{},"En esta sección, se explorarán algunos componentes adicionales que pueden mejorar la experiencia del usuario en la interfaz de nuestro RPG. Estos componentes pueden incluir menús desplegables, zonas con scroll, y otros elementos interactivos que pueden hacer que la interfaz sea más atractiva y funcional.",[418,427,429],{"id":428},"menús-desplegables","Menús desplegables",[423,431,432,433,437],{},"Los menús desplegables son una excelente manera de organizar opciones y configuraciones en la interfaz de usuario. En Java, se pueden crear menús desplegables utilizando la clase ",[434,435,436],"code",{},"JComboBox"," de Swing. Este componente permite a los usuarios seleccionar una opción de una lista desplegable, lo que puede ser útil para configuraciones de juego, selección de personajes, o cualquier otra funcionalidad que requiera opciones múltiples.",[439,440,442],"h3",{"id":441},"jcombobox-y-combopopup","JComboBox y ComboPopup",[423,444,445],{},"Para los menús desplegables, debemos entender que el componente se divide en dos partes, por un lado, el ComboBox que es el elemento que se muestra en la interfaz, y, por otro lado, el ComboPopup que es el componente que se despliega cuando se hace clic en el ComboBox.",[423,447,448],{},"Por lo que las clases base deberían verser de la siguiente manera:",[450,451,456],"pre",{"className":452,"code":453,"language":454,"meta":455,"style":455},"language-java shiki shiki-themes github-dark","package app.game.rpg.ui.components.inputs;\n\nimport app.game.rpg.ui.components.borders.RPGRoundedBorder;\nimport app.game.rpg.ui.components.delegates.RPGCellRenderer;\nimport app.game.rpg.ui.components.delegates.RPGComboBoxUI;\nimport app.game.rpg.utils.FontCache;\n\nimport javax.swing.*;\nimport javax.swing.border.CompoundBorder;\nimport javax.swing.border.EmptyBorder;\nimport javax.swing.plaf.basic.BasicComboPopup;\nimport javax.swing.plaf.basic.ComboPopup;\nimport java.awt.*;\n\npublic class RPGComboBox\u003CT> extends JComboBox\u003CT> {\n\n    public RPGComboBox(T[] items) {\n        super(items);\n    }\n\n    @Override\n    public void updateUI() {\n        setUI(new RPGComboBoxUI());\n    }\n}\n","java","",[434,457,458,471,478,487,495,503,511,516,531,539,547,555,563,575,580,615,620,643,652,658,663,672,686,703,708],{"__ignoreMap":455},[459,460,463,467],"span",{"class":461,"line":462},"line",1,[459,464,466],{"class":465},"snl16","package",[459,468,470],{"class":469},"s95oV"," app.game.rpg.ui.components.inputs;\n",[459,472,474],{"class":461,"line":473},2,[459,475,477],{"emptyLinePlaceholder":476},true,"\n",[459,479,481,484],{"class":461,"line":480},3,[459,482,483],{"class":465},"import",[459,485,486],{"class":469}," app.game.rpg.ui.components.borders.RPGRoundedBorder;\n",[459,488,490,492],{"class":461,"line":489},4,[459,491,483],{"class":465},[459,493,494],{"class":469}," app.game.rpg.ui.components.delegates.RPGCellRenderer;\n",[459,496,498,500],{"class":461,"line":497},5,[459,499,483],{"class":465},[459,501,502],{"class":469}," app.game.rpg.ui.components.delegates.RPGComboBoxUI;\n",[459,504,506,508],{"class":461,"line":505},6,[459,507,483],{"class":465},[459,509,510],{"class":469}," app.game.rpg.utils.FontCache;\n",[459,512,514],{"class":461,"line":513},7,[459,515,477],{"emptyLinePlaceholder":476},[459,517,519,521,524,528],{"class":461,"line":518},8,[459,520,483],{"class":465},[459,522,523],{"class":469}," javax.swing.",[459,525,527],{"class":526},"sDLfK","*",[459,529,530],{"class":469},";\n",[459,532,534,536],{"class":461,"line":533},9,[459,535,483],{"class":465},[459,537,538],{"class":469}," javax.swing.border.CompoundBorder;\n",[459,540,542,544],{"class":461,"line":541},10,[459,543,483],{"class":465},[459,545,546],{"class":469}," javax.swing.border.EmptyBorder;\n",[459,548,550,552],{"class":461,"line":549},11,[459,551,483],{"class":465},[459,553,554],{"class":469}," javax.swing.plaf.basic.BasicComboPopup;\n",[459,556,558,560],{"class":461,"line":557},12,[459,559,483],{"class":465},[459,561,562],{"class":469}," javax.swing.plaf.basic.ComboPopup;\n",[459,564,566,568,571,573],{"class":461,"line":565},13,[459,567,483],{"class":465},[459,569,570],{"class":469}," java.awt.",[459,572,527],{"class":526},[459,574,530],{"class":469},[459,576,578],{"class":461,"line":577},14,[459,579,477],{"emptyLinePlaceholder":476},[459,581,583,586,589,593,596,599,602,605,608,610,612],{"class":461,"line":582},15,[459,584,585],{"class":465},"public",[459,587,588],{"class":465}," class",[459,590,592],{"class":591},"svObZ"," RPGComboBox",[459,594,595],{"class":469},"\u003C",[459,597,598],{"class":465},"T",[459,600,601],{"class":469},"> ",[459,603,604],{"class":465},"extends",[459,606,607],{"class":591}," JComboBox",[459,609,595],{"class":469},[459,611,598],{"class":465},[459,613,614],{"class":469},"> {\n",[459,616,618],{"class":461,"line":617},16,[459,619,477],{"emptyLinePlaceholder":476},[459,621,623,626,628,631,633,636,640],{"class":461,"line":622},17,[459,624,625],{"class":465},"    public",[459,627,592],{"class":591},[459,629,630],{"class":469},"(",[459,632,598],{"class":465},[459,634,635],{"class":469},"[] ",[459,637,639],{"class":638},"s9osk","items",[459,641,642],{"class":469},") {\n",[459,644,646,649],{"class":461,"line":645},18,[459,647,648],{"class":526},"        super",[459,650,651],{"class":469},"(items);\n",[459,653,655],{"class":461,"line":654},19,[459,656,657],{"class":469},"    }\n",[459,659,661],{"class":461,"line":660},20,[459,662,477],{"emptyLinePlaceholder":476},[459,664,666,669],{"class":461,"line":665},21,[459,667,668],{"class":469},"    @",[459,670,671],{"class":465},"Override\n",[459,673,675,677,680,683],{"class":461,"line":674},22,[459,676,625],{"class":465},[459,678,679],{"class":465}," void",[459,681,682],{"class":591}," updateUI",[459,684,685],{"class":469},"() {\n",[459,687,689,692,694,697,700],{"class":461,"line":688},23,[459,690,691],{"class":591},"        setUI",[459,693,630],{"class":469},[459,695,696],{"class":465},"new",[459,698,699],{"class":591}," RPGComboBoxUI",[459,701,702],{"class":469},"());\n",[459,704,706],{"class":461,"line":705},24,[459,707,657],{"class":469},[459,709,711],{"class":461,"line":710},25,[459,712,713],{"class":469},"}\n",[450,715,717],{"className":452,"code":716,"language":454,"meta":455,"style":455},"package app.game.rpg.ui.components.inputs;\n\nimport app.game.rpg.ui.components.borders.RPGRoundedBorder;\nimport app.game.rpg.ui.components.delegates.Interactable;\n\nimport javax.swing.*;\nimport javax.swing.border.CompoundBorder;\nimport javax.swing.border.EmptyBorder;\nimport javax.swing.plaf.basic.BasicComboPopup;\nimport java.awt.*;\n\npublic class RPGComboPopup extends BasicComboPopup {\n\n    public RPGComboPopup(JComboBox\u003CObject> combo) {\n        super(combo);\n        setBorder(new RPGRoundedBorder(3, 0));\n        setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));\n    }\n\n    protected void configureList() {\n        super.configureList();\n        list.setSelectionBackground(comboBox.getBackground());\n        list.setSelectionForeground(comboBox.getForeground());\n    }\n}\n",[434,718,719,725,729,735,742,746,756,762,768,774,784,788,806,810,829,836,862,876,880,884,896,909,925,939,943],{"__ignoreMap":455},[459,720,721,723],{"class":461,"line":462},[459,722,466],{"class":465},[459,724,470],{"class":469},[459,726,727],{"class":461,"line":473},[459,728,477],{"emptyLinePlaceholder":476},[459,730,731,733],{"class":461,"line":480},[459,732,483],{"class":465},[459,734,486],{"class":469},[459,736,737,739],{"class":461,"line":489},[459,738,483],{"class":465},[459,740,741],{"class":469}," app.game.rpg.ui.components.delegates.Interactable;\n",[459,743,744],{"class":461,"line":497},[459,745,477],{"emptyLinePlaceholder":476},[459,747,748,750,752,754],{"class":461,"line":505},[459,749,483],{"class":465},[459,751,523],{"class":469},[459,753,527],{"class":526},[459,755,530],{"class":469},[459,757,758,760],{"class":461,"line":513},[459,759,483],{"class":465},[459,761,538],{"class":469},[459,763,764,766],{"class":461,"line":518},[459,765,483],{"class":465},[459,767,546],{"class":469},[459,769,770,772],{"class":461,"line":533},[459,771,483],{"class":465},[459,773,554],{"class":469},[459,775,776,778,780,782],{"class":461,"line":541},[459,777,483],{"class":465},[459,779,570],{"class":469},[459,781,527],{"class":526},[459,783,530],{"class":469},[459,785,786],{"class":461,"line":549},[459,787,477],{"emptyLinePlaceholder":476},[459,789,790,792,794,797,800,803],{"class":461,"line":557},[459,791,585],{"class":465},[459,793,588],{"class":465},[459,795,796],{"class":591}," RPGComboPopup",[459,798,799],{"class":465}," extends",[459,801,802],{"class":591}," BasicComboPopup",[459,804,805],{"class":469}," {\n",[459,807,808],{"class":461,"line":565},[459,809,477],{"emptyLinePlaceholder":476},[459,811,812,814,816,819,822,824,827],{"class":461,"line":577},[459,813,625],{"class":465},[459,815,796],{"class":591},[459,817,818],{"class":469},"(JComboBox\u003C",[459,820,821],{"class":465},"Object",[459,823,601],{"class":469},[459,825,826],{"class":638},"combo",[459,828,642],{"class":469},[459,830,831,833],{"class":461,"line":582},[459,832,648],{"class":526},[459,834,835],{"class":469},"(combo);\n",[459,837,838,841,843,845,848,850,853,856,859],{"class":461,"line":617},[459,839,840],{"class":591},"        setBorder",[459,842,630],{"class":469},[459,844,696],{"class":465},[459,846,847],{"class":591}," RPGRoundedBorder",[459,849,630],{"class":469},[459,851,852],{"class":526},"3",[459,854,855],{"class":469},", ",[459,857,858],{"class":526},"0",[459,860,861],{"class":469},"));\n",[459,863,864,867,870,873],{"class":461,"line":622},[459,865,866],{"class":591},"        setCursor",[459,868,869],{"class":469},"(Cursor.",[459,871,872],{"class":591},"getPredefinedCursor",[459,874,875],{"class":469},"(Cursor.HAND_CURSOR));\n",[459,877,878],{"class":461,"line":645},[459,879,657],{"class":469},[459,881,882],{"class":461,"line":654},[459,883,477],{"emptyLinePlaceholder":476},[459,885,886,889,891,894],{"class":461,"line":660},[459,887,888],{"class":465},"    protected",[459,890,679],{"class":465},[459,892,893],{"class":591}," configureList",[459,895,685],{"class":469},[459,897,898,900,903,906],{"class":461,"line":665},[459,899,648],{"class":526},[459,901,902],{"class":469},".",[459,904,905],{"class":591},"configureList",[459,907,908],{"class":469},"();\n",[459,910,911,914,917,920,923],{"class":461,"line":674},[459,912,913],{"class":469},"        list.",[459,915,916],{"class":591},"setSelectionBackground",[459,918,919],{"class":469},"(comboBox.",[459,921,922],{"class":591},"getBackground",[459,924,702],{"class":469},[459,926,927,929,932,934,937],{"class":461,"line":688},[459,928,913],{"class":469},[459,930,931],{"class":591},"setSelectionForeground",[459,933,919],{"class":469},[459,935,936],{"class":591},"getForeground",[459,938,702],{"class":469},[459,940,941],{"class":461,"line":705},[459,942,657],{"class":469},[459,944,945],{"class":461,"line":710},[459,946,713],{"class":469},[423,948,949],{},"Nota que en este caso el único delegate es el ComboBox ya que el ComboPopup no necesita ningún delegate.",[423,951,952],{},"Ahora veamos el delegate del ComboBox.",[450,954,956],{"className":452,"code":955,"language":454,"meta":455,"style":455},"package app.game.rpg.ui.components.delegates;\n\nimport app.game.rpg.ui.components.borders.RPGRoundedBorder;\nimport app.game.rpg.ui.components.buttons.RPGColorState;\nimport app.game.rpg.ui.components.inputs.RPGComboPopup;\nimport app.game.rpg.ui.components.listeners.RPGMouseListener;\nimport app.game.rpg.utils.ColorPalette;\nimport app.game.rpg.utils.FontCache;\n\nimport javax.swing.*;\nimport javax.swing.border.CompoundBorder;\nimport javax.swing.border.EmptyBorder;\nimport javax.swing.plaf.basic.BasicComboBoxUI;\nimport javax.swing.plaf.basic.ComboPopup;\nimport java.awt.*;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.util.HashMap;\nimport java.util.Objects;\n\nimport static com.sun.java.accessibility.util.AWTEventMonitor.addMouseListener;\n\npublic class RPGComboBoxUI extends BasicComboBoxUI implements Interactable {\n    protected Color top;\n    protected Color bottom;\n    protected RPGMouseListener listener;\n    protected HashMap\u003CRPGColorState, Color> colors = new HashMap\u003C>();\n\n\n    @Override\n    public Paint getPaint(JComponent c) {\n        getColors();\n        \u002F\u002F 🔵 Fondo degradado\n        return new LinearGradientPaint(0, 0, 0,\n                comboBox.getHeight(),\n                new float[]{0f, 0.25f, 1f}, new Color[]{top, bottom, top});\n    }\n\n    @Override\n    public void getColors() {\n        if (listener.isPressed()) {\n            top = ColorPalette.BLUE_PRESSED_TOP;\n            bottom = ColorPalette.BLUE_PRESSED_BOTTOM;\n        } else if (listener.isHover()) {\n            top = ColorPalette.BLUE_HOVER_TOP;\n            bottom = ColorPalette.BLUE_HOVER_BOTTOM;\n        } else {\n            top = ColorPalette.BLUE_TOP;\n            bottom = ColorPalette.BLUE_BOTTOM;\n        }\n    }\n\n    @Override\n    public void configureColors() {\n        colors.put(RPGColorState.DEFAULT_TOP, ColorPalette.BLUE_TOP);\n        colors.put(RPGColorState.DEFAULT_BOTTOM, ColorPalette.BLUE_BOTTOM);\n        colors.put(RPGColorState.HOVER_TOP, ColorPalette.BLUE_HOVER_TOP);\n        colors.put(RPGColorState.HOVER_BOTTOM, ColorPalette.BLUE_HOVER_BOTTOM);\n        colors.put(RPGColorState.PRESSED_TOP, ColorPalette.BLUE_PRESSED_TOP);\n        colors.put(RPGColorState.PRESSED_BOTTOM, ColorPalette.BLUE_PRESSED_BOTTOM);\n    }\n\n    @Override\n    protected void installDefaults() {\n        super.installDefaults();\n        listener = new RPGMouseListener(comboBox);\n        comboBox.setForeground(Color.WHITE);\n        comboBox.setOpaque(false);\n        comboBox.setEditable(false);\n        comboBox.setFont(FontCache.getFont(\"BoldPixels\").deriveFont(24f));\n        comboBox.setBorder(new RPGRoundedBorder(3, 5));\n        comboBox.setFocusable(false);\n        comboBox.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));\n        comboBox.setForeground(Color.WHITE);\n        comboBox.setRenderer(new RPGCellRenderer());\n    }\n\n    @Override\n    public void paintCurrentValue(Graphics g, Rectangle bounds, boolean hasFocus) {\n\n        Graphics2D g2 = (Graphics2D) g.create();\n        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n        g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\n        \u002F\u002F\n        g2.setPaint(getPaint(comboBox));\n        int x = 2;\n        int y = 2;\n        int w = comboBox.getWidth() - 5;\n        int h = comboBox.getHeight() - 5;\n        g2.fillRoundRect(x, y, w, h, 0, 0);\n        installRPGBright(g2, comboBox.getWidth(), comboBox.getHeight(), 0);\n        g2.setFont(comboBox.getFont());\n        g2.setColor(comboBox.getForeground());\n        x = bounds.x + 5;\n        y = ((comboBox.getFontMetrics(comboBox.getFont()).getHeight() + bounds.y) \u002F 2) + 10;\n        w = bounds.width;\n        h = bounds.height;\n        g2.drawString(Objects.requireNonNull(comboBox.getSelectedItem()).toString(), x, y);\n        g2.dispose();\n    }\n\n    @Override\n    public void installRPGBright(Graphics2D g2, int w, int h, int radius) {\n        Color color = new Color(255, 255, 255, 100);\n        Color transparent = new Color(255, 255, 255, 0);\n        \u002F\u002F ✨ Efecto de brillo superior (opcional pero muy RPG)\n        GradientPaint highlight = new GradientPaint(\n                0, 0, color,\n                0, (float) (h - 6) \u002F 2, transparent\n        );\n        g2.setPaint(highlight);\n        g2.fillRoundRect(2, 2, w - 4, h \u002F 2, radius, radius);\n    }\n\n    @Override\n    protected ComboPopup createPopup() {\n        return new RPGComboPopup(comboBox);\n    }\n\n    @Override\n    protected JButton createArrowButton() {\n        return null;\n    }\n\n    @Override\n    protected void installListeners() {\n        super.installListeners();\n        comboBox.addMouseListener(listener);\n    }\n}\n",[434,957,958,965,969,975,982,989,996,1003,1009,1013,1023,1029,1035,1042,1048,1058,1065,1072,1079,1086,1090,1100,1104,1125,1132,1139,1147,1175,1180,1185,1192,1211,1219,1226,1252,1264,1300,1305,1310,1317,1329,1344,1355,1366,1385,1395,1405,1414,1424,1434,1440,1445,1450,1457,1469,1481,1491,1501,1511,1521,1531,1536,1541,1548,1560,1572,1588,1600,1616,1630,1663,1688,1702,1716,1725,1742,1747,1752,1759,1791,1796,1812,1824,1834,1840,1855,1871,1885,1912,1934,1953,1976,1989,2003,2021,2066,2077,2088,2115,2125,2130,2135,2142,2182,2214,2244,2250,2266,2279,2307,2313,2323,2357,2362,2367,2374,2387,2398,2403,2408,2415,2428,2438,2443,2448,2455,2467,2479,2490,2495],{"__ignoreMap":455},[459,959,960,962],{"class":461,"line":462},[459,961,466],{"class":465},[459,963,964],{"class":469}," app.game.rpg.ui.components.delegates;\n",[459,966,967],{"class":461,"line":473},[459,968,477],{"emptyLinePlaceholder":476},[459,970,971,973],{"class":461,"line":480},[459,972,483],{"class":465},[459,974,486],{"class":469},[459,976,977,979],{"class":461,"line":489},[459,978,483],{"class":465},[459,980,981],{"class":469}," app.game.rpg.ui.components.buttons.RPGColorState;\n",[459,983,984,986],{"class":461,"line":497},[459,985,483],{"class":465},[459,987,988],{"class":469}," app.game.rpg.ui.components.inputs.RPGComboPopup;\n",[459,990,991,993],{"class":461,"line":505},[459,992,483],{"class":465},[459,994,995],{"class":469}," app.game.rpg.ui.components.listeners.RPGMouseListener;\n",[459,997,998,1000],{"class":461,"line":513},[459,999,483],{"class":465},[459,1001,1002],{"class":469}," app.game.rpg.utils.ColorPalette;\n",[459,1004,1005,1007],{"class":461,"line":518},[459,1006,483],{"class":465},[459,1008,510],{"class":469},[459,1010,1011],{"class":461,"line":533},[459,1012,477],{"emptyLinePlaceholder":476},[459,1014,1015,1017,1019,1021],{"class":461,"line":541},[459,1016,483],{"class":465},[459,1018,523],{"class":469},[459,1020,527],{"class":526},[459,1022,530],{"class":469},[459,1024,1025,1027],{"class":461,"line":549},[459,1026,483],{"class":465},[459,1028,538],{"class":469},[459,1030,1031,1033],{"class":461,"line":557},[459,1032,483],{"class":465},[459,1034,546],{"class":469},[459,1036,1037,1039],{"class":461,"line":565},[459,1038,483],{"class":465},[459,1040,1041],{"class":469}," javax.swing.plaf.basic.BasicComboBoxUI;\n",[459,1043,1044,1046],{"class":461,"line":577},[459,1045,483],{"class":465},[459,1047,562],{"class":469},[459,1049,1050,1052,1054,1056],{"class":461,"line":582},[459,1051,483],{"class":465},[459,1053,570],{"class":469},[459,1055,527],{"class":526},[459,1057,530],{"class":469},[459,1059,1060,1062],{"class":461,"line":617},[459,1061,483],{"class":465},[459,1063,1064],{"class":469}," java.awt.event.MouseAdapter;\n",[459,1066,1067,1069],{"class":461,"line":622},[459,1068,483],{"class":465},[459,1070,1071],{"class":469}," java.awt.event.MouseEvent;\n",[459,1073,1074,1076],{"class":461,"line":645},[459,1075,483],{"class":465},[459,1077,1078],{"class":469}," java.util.HashMap;\n",[459,1080,1081,1083],{"class":461,"line":654},[459,1082,483],{"class":465},[459,1084,1085],{"class":469}," java.util.Objects;\n",[459,1087,1088],{"class":461,"line":660},[459,1089,477],{"emptyLinePlaceholder":476},[459,1091,1092,1094,1097],{"class":461,"line":665},[459,1093,483],{"class":465},[459,1095,1096],{"class":465}," static",[459,1098,1099],{"class":469}," com.sun.java.accessibility.util.AWTEventMonitor.addMouseListener;\n",[459,1101,1102],{"class":461,"line":674},[459,1103,477],{"emptyLinePlaceholder":476},[459,1105,1106,1108,1110,1112,1114,1117,1120,1123],{"class":461,"line":688},[459,1107,585],{"class":465},[459,1109,588],{"class":465},[459,1111,699],{"class":591},[459,1113,799],{"class":465},[459,1115,1116],{"class":591}," BasicComboBoxUI",[459,1118,1119],{"class":465}," implements",[459,1121,1122],{"class":591}," Interactable",[459,1124,805],{"class":469},[459,1126,1127,1129],{"class":461,"line":705},[459,1128,888],{"class":465},[459,1130,1131],{"class":469}," Color top;\n",[459,1133,1134,1136],{"class":461,"line":710},[459,1135,888],{"class":465},[459,1137,1138],{"class":469}," Color bottom;\n",[459,1140,1142,1144],{"class":461,"line":1141},26,[459,1143,888],{"class":465},[459,1145,1146],{"class":469}," RPGMouseListener listener;\n",[459,1148,1150,1152,1155,1158,1160,1163,1166,1169,1172],{"class":461,"line":1149},27,[459,1151,888],{"class":465},[459,1153,1154],{"class":469}," HashMap\u003C",[459,1156,1157],{"class":465},"RPGColorState",[459,1159,855],{"class":469},[459,1161,1162],{"class":465},"Color",[459,1164,1165],{"class":469},"> colors ",[459,1167,1168],{"class":465},"=",[459,1170,1171],{"class":465}," new",[459,1173,1174],{"class":469}," HashMap\u003C>();\n",[459,1176,1178],{"class":461,"line":1177},28,[459,1179,477],{"emptyLinePlaceholder":476},[459,1181,1183],{"class":461,"line":1182},29,[459,1184,477],{"emptyLinePlaceholder":476},[459,1186,1188,1190],{"class":461,"line":1187},30,[459,1189,668],{"class":469},[459,1191,671],{"class":465},[459,1193,1195,1197,1200,1203,1206,1209],{"class":461,"line":1194},31,[459,1196,625],{"class":465},[459,1198,1199],{"class":469}," Paint ",[459,1201,1202],{"class":591},"getPaint",[459,1204,1205],{"class":469},"(JComponent ",[459,1207,1208],{"class":638},"c",[459,1210,642],{"class":469},[459,1212,1214,1217],{"class":461,"line":1213},32,[459,1215,1216],{"class":591},"        getColors",[459,1218,908],{"class":469},[459,1220,1222],{"class":461,"line":1221},33,[459,1223,1225],{"class":1224},"sAwPA","        \u002F\u002F 🔵 Fondo degradado\n",[459,1227,1229,1232,1234,1237,1239,1241,1243,1245,1247,1249],{"class":461,"line":1228},34,[459,1230,1231],{"class":465},"        return",[459,1233,1171],{"class":465},[459,1235,1236],{"class":591}," LinearGradientPaint",[459,1238,630],{"class":469},[459,1240,858],{"class":526},[459,1242,855],{"class":469},[459,1244,858],{"class":526},[459,1246,855],{"class":469},[459,1248,858],{"class":526},[459,1250,1251],{"class":469},",\n",[459,1253,1255,1258,1261],{"class":461,"line":1254},35,[459,1256,1257],{"class":469},"                comboBox.",[459,1259,1260],{"class":591},"getHeight",[459,1262,1263],{"class":469},"(),\n",[459,1265,1267,1270,1273,1276,1279,1281,1284,1286,1289,1292,1294,1297],{"class":461,"line":1266},36,[459,1268,1269],{"class":465},"                new",[459,1271,1272],{"class":465}," float",[459,1274,1275],{"class":469},"[]{",[459,1277,1278],{"class":526},"0f",[459,1280,855],{"class":469},[459,1282,1283],{"class":526},"0.25f",[459,1285,855],{"class":469},[459,1287,1288],{"class":526},"1f",[459,1290,1291],{"class":469},"}, ",[459,1293,696],{"class":465},[459,1295,1296],{"class":465}," Color",[459,1298,1299],{"class":469},"[]{top, bottom, top});\n",[459,1301,1303],{"class":461,"line":1302},37,[459,1304,657],{"class":469},[459,1306,1308],{"class":461,"line":1307},38,[459,1309,477],{"emptyLinePlaceholder":476},[459,1311,1313,1315],{"class":461,"line":1312},39,[459,1314,668],{"class":469},[459,1316,671],{"class":465},[459,1318,1320,1322,1324,1327],{"class":461,"line":1319},40,[459,1321,625],{"class":465},[459,1323,679],{"class":465},[459,1325,1326],{"class":591}," getColors",[459,1328,685],{"class":469},[459,1330,1332,1335,1338,1341],{"class":461,"line":1331},41,[459,1333,1334],{"class":465},"        if",[459,1336,1337],{"class":469}," (listener.",[459,1339,1340],{"class":591},"isPressed",[459,1342,1343],{"class":469},"()) {\n",[459,1345,1347,1350,1352],{"class":461,"line":1346},42,[459,1348,1349],{"class":469},"            top ",[459,1351,1168],{"class":465},[459,1353,1354],{"class":469}," ColorPalette.BLUE_PRESSED_TOP;\n",[459,1356,1358,1361,1363],{"class":461,"line":1357},43,[459,1359,1360],{"class":469},"            bottom ",[459,1362,1168],{"class":465},[459,1364,1365],{"class":469}," ColorPalette.BLUE_PRESSED_BOTTOM;\n",[459,1367,1369,1372,1375,1378,1380,1383],{"class":461,"line":1368},44,[459,1370,1371],{"class":469},"        } ",[459,1373,1374],{"class":465},"else",[459,1376,1377],{"class":465}," if",[459,1379,1337],{"class":469},[459,1381,1382],{"class":591},"isHover",[459,1384,1343],{"class":469},[459,1386,1388,1390,1392],{"class":461,"line":1387},45,[459,1389,1349],{"class":469},[459,1391,1168],{"class":465},[459,1393,1394],{"class":469}," ColorPalette.BLUE_HOVER_TOP;\n",[459,1396,1398,1400,1402],{"class":461,"line":1397},46,[459,1399,1360],{"class":469},[459,1401,1168],{"class":465},[459,1403,1404],{"class":469}," ColorPalette.BLUE_HOVER_BOTTOM;\n",[459,1406,1408,1410,1412],{"class":461,"line":1407},47,[459,1409,1371],{"class":469},[459,1411,1374],{"class":465},[459,1413,805],{"class":469},[459,1415,1417,1419,1421],{"class":461,"line":1416},48,[459,1418,1349],{"class":469},[459,1420,1168],{"class":465},[459,1422,1423],{"class":469}," ColorPalette.BLUE_TOP;\n",[459,1425,1427,1429,1431],{"class":461,"line":1426},49,[459,1428,1360],{"class":469},[459,1430,1168],{"class":465},[459,1432,1433],{"class":469}," ColorPalette.BLUE_BOTTOM;\n",[459,1435,1437],{"class":461,"line":1436},50,[459,1438,1439],{"class":469},"        }\n",[459,1441,1443],{"class":461,"line":1442},51,[459,1444,657],{"class":469},[459,1446,1448],{"class":461,"line":1447},52,[459,1449,477],{"emptyLinePlaceholder":476},[459,1451,1453,1455],{"class":461,"line":1452},53,[459,1454,668],{"class":469},[459,1456,671],{"class":465},[459,1458,1460,1462,1464,1467],{"class":461,"line":1459},54,[459,1461,625],{"class":465},[459,1463,679],{"class":465},[459,1465,1466],{"class":591}," configureColors",[459,1468,685],{"class":469},[459,1470,1472,1475,1478],{"class":461,"line":1471},55,[459,1473,1474],{"class":469},"        colors.",[459,1476,1477],{"class":591},"put",[459,1479,1480],{"class":469},"(RPGColorState.DEFAULT_TOP, ColorPalette.BLUE_TOP);\n",[459,1482,1484,1486,1488],{"class":461,"line":1483},56,[459,1485,1474],{"class":469},[459,1487,1477],{"class":591},[459,1489,1490],{"class":469},"(RPGColorState.DEFAULT_BOTTOM, ColorPalette.BLUE_BOTTOM);\n",[459,1492,1494,1496,1498],{"class":461,"line":1493},57,[459,1495,1474],{"class":469},[459,1497,1477],{"class":591},[459,1499,1500],{"class":469},"(RPGColorState.HOVER_TOP, ColorPalette.BLUE_HOVER_TOP);\n",[459,1502,1504,1506,1508],{"class":461,"line":1503},58,[459,1505,1474],{"class":469},[459,1507,1477],{"class":591},[459,1509,1510],{"class":469},"(RPGColorState.HOVER_BOTTOM, ColorPalette.BLUE_HOVER_BOTTOM);\n",[459,1512,1514,1516,1518],{"class":461,"line":1513},59,[459,1515,1474],{"class":469},[459,1517,1477],{"class":591},[459,1519,1520],{"class":469},"(RPGColorState.PRESSED_TOP, ColorPalette.BLUE_PRESSED_TOP);\n",[459,1522,1524,1526,1528],{"class":461,"line":1523},60,[459,1525,1474],{"class":469},[459,1527,1477],{"class":591},[459,1529,1530],{"class":469},"(RPGColorState.PRESSED_BOTTOM, ColorPalette.BLUE_PRESSED_BOTTOM);\n",[459,1532,1534],{"class":461,"line":1533},61,[459,1535,657],{"class":469},[459,1537,1539],{"class":461,"line":1538},62,[459,1540,477],{"emptyLinePlaceholder":476},[459,1542,1544,1546],{"class":461,"line":1543},63,[459,1545,668],{"class":469},[459,1547,671],{"class":465},[459,1549,1551,1553,1555,1558],{"class":461,"line":1550},64,[459,1552,888],{"class":465},[459,1554,679],{"class":465},[459,1556,1557],{"class":591}," installDefaults",[459,1559,685],{"class":469},[459,1561,1563,1565,1567,1570],{"class":461,"line":1562},65,[459,1564,648],{"class":526},[459,1566,902],{"class":469},[459,1568,1569],{"class":591},"installDefaults",[459,1571,908],{"class":469},[459,1573,1575,1578,1580,1582,1585],{"class":461,"line":1574},66,[459,1576,1577],{"class":469},"        listener ",[459,1579,1168],{"class":465},[459,1581,1171],{"class":465},[459,1583,1584],{"class":591}," RPGMouseListener",[459,1586,1587],{"class":469},"(comboBox);\n",[459,1589,1591,1594,1597],{"class":461,"line":1590},67,[459,1592,1593],{"class":469},"        comboBox.",[459,1595,1596],{"class":591},"setForeground",[459,1598,1599],{"class":469},"(Color.WHITE);\n",[459,1601,1603,1605,1608,1610,1613],{"class":461,"line":1602},68,[459,1604,1593],{"class":469},[459,1606,1607],{"class":591},"setOpaque",[459,1609,630],{"class":469},[459,1611,1612],{"class":526},"false",[459,1614,1615],{"class":469},");\n",[459,1617,1619,1621,1624,1626,1628],{"class":461,"line":1618},69,[459,1620,1593],{"class":469},[459,1622,1623],{"class":591},"setEditable",[459,1625,630],{"class":469},[459,1627,1612],{"class":526},[459,1629,1615],{"class":469},[459,1631,1633,1635,1638,1641,1644,1646,1650,1653,1656,1658,1661],{"class":461,"line":1632},70,[459,1634,1593],{"class":469},[459,1636,1637],{"class":591},"setFont",[459,1639,1640],{"class":469},"(FontCache.",[459,1642,1643],{"class":591},"getFont",[459,1645,630],{"class":469},[459,1647,1649],{"class":1648},"sU2Wk","\"BoldPixels\"",[459,1651,1652],{"class":469},").",[459,1654,1655],{"class":591},"deriveFont",[459,1657,630],{"class":469},[459,1659,1660],{"class":526},"24f",[459,1662,861],{"class":469},[459,1664,1666,1668,1671,1673,1675,1677,1679,1681,1683,1686],{"class":461,"line":1665},71,[459,1667,1593],{"class":469},[459,1669,1670],{"class":591},"setBorder",[459,1672,630],{"class":469},[459,1674,696],{"class":465},[459,1676,847],{"class":591},[459,1678,630],{"class":469},[459,1680,852],{"class":526},[459,1682,855],{"class":469},[459,1684,1685],{"class":526},"5",[459,1687,861],{"class":469},[459,1689,1691,1693,1696,1698,1700],{"class":461,"line":1690},72,[459,1692,1593],{"class":469},[459,1694,1695],{"class":591},"setFocusable",[459,1697,630],{"class":469},[459,1699,1612],{"class":526},[459,1701,1615],{"class":469},[459,1703,1705,1707,1710,1712,1714],{"class":461,"line":1704},73,[459,1706,1593],{"class":469},[459,1708,1709],{"class":591},"setCursor",[459,1711,869],{"class":469},[459,1713,872],{"class":591},[459,1715,875],{"class":469},[459,1717,1719,1721,1723],{"class":461,"line":1718},74,[459,1720,1593],{"class":469},[459,1722,1596],{"class":591},[459,1724,1599],{"class":469},[459,1726,1728,1730,1733,1735,1737,1740],{"class":461,"line":1727},75,[459,1729,1593],{"class":469},[459,1731,1732],{"class":591},"setRenderer",[459,1734,630],{"class":469},[459,1736,696],{"class":465},[459,1738,1739],{"class":591}," RPGCellRenderer",[459,1741,702],{"class":469},[459,1743,1745],{"class":461,"line":1744},76,[459,1746,657],{"class":469},[459,1748,1750],{"class":461,"line":1749},77,[459,1751,477],{"emptyLinePlaceholder":476},[459,1753,1755,1757],{"class":461,"line":1754},78,[459,1756,668],{"class":469},[459,1758,671],{"class":465},[459,1760,1762,1764,1766,1769,1772,1775,1778,1781,1783,1786,1789],{"class":461,"line":1761},79,[459,1763,625],{"class":465},[459,1765,679],{"class":465},[459,1767,1768],{"class":591}," paintCurrentValue",[459,1770,1771],{"class":469},"(Graphics ",[459,1773,1774],{"class":638},"g",[459,1776,1777],{"class":469},", Rectangle ",[459,1779,1780],{"class":638},"bounds",[459,1782,855],{"class":469},[459,1784,1785],{"class":465},"boolean",[459,1787,1788],{"class":638}," hasFocus",[459,1790,642],{"class":469},[459,1792,1794],{"class":461,"line":1793},80,[459,1795,477],{"emptyLinePlaceholder":476},[459,1797,1799,1802,1804,1807,1810],{"class":461,"line":1798},81,[459,1800,1801],{"class":469},"        Graphics2D g2 ",[459,1803,1168],{"class":465},[459,1805,1806],{"class":469}," (Graphics2D) g.",[459,1808,1809],{"class":591},"create",[459,1811,908],{"class":469},[459,1813,1815,1818,1821],{"class":461,"line":1814},82,[459,1816,1817],{"class":469},"        g2.",[459,1819,1820],{"class":591},"setRenderingHint",[459,1822,1823],{"class":469},"(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n",[459,1825,1827,1829,1831],{"class":461,"line":1826},83,[459,1828,1817],{"class":469},[459,1830,1820],{"class":591},[459,1832,1833],{"class":469},"(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\n",[459,1835,1837],{"class":461,"line":1836},84,[459,1838,1839],{"class":1224},"        \u002F\u002F\n",[459,1841,1843,1845,1848,1850,1852],{"class":461,"line":1842},85,[459,1844,1817],{"class":469},[459,1846,1847],{"class":591},"setPaint",[459,1849,630],{"class":469},[459,1851,1202],{"class":591},[459,1853,1854],{"class":469},"(comboBox));\n",[459,1856,1858,1861,1864,1866,1869],{"class":461,"line":1857},86,[459,1859,1860],{"class":465},"        int",[459,1862,1863],{"class":469}," x ",[459,1865,1168],{"class":465},[459,1867,1868],{"class":526}," 2",[459,1870,530],{"class":469},[459,1872,1874,1876,1879,1881,1883],{"class":461,"line":1873},87,[459,1875,1860],{"class":465},[459,1877,1878],{"class":469}," y ",[459,1880,1168],{"class":465},[459,1882,1868],{"class":526},[459,1884,530],{"class":469},[459,1886,1888,1890,1893,1895,1898,1901,1904,1907,1910],{"class":461,"line":1887},88,[459,1889,1860],{"class":465},[459,1891,1892],{"class":469}," w ",[459,1894,1168],{"class":465},[459,1896,1897],{"class":469}," comboBox.",[459,1899,1900],{"class":591},"getWidth",[459,1902,1903],{"class":469},"() ",[459,1905,1906],{"class":465},"-",[459,1908,1909],{"class":526}," 5",[459,1911,530],{"class":469},[459,1913,1915,1917,1920,1922,1924,1926,1928,1930,1932],{"class":461,"line":1914},89,[459,1916,1860],{"class":465},[459,1918,1919],{"class":469}," h ",[459,1921,1168],{"class":465},[459,1923,1897],{"class":469},[459,1925,1260],{"class":591},[459,1927,1903],{"class":469},[459,1929,1906],{"class":465},[459,1931,1909],{"class":526},[459,1933,530],{"class":469},[459,1935,1937,1939,1942,1945,1947,1949,1951],{"class":461,"line":1936},90,[459,1938,1817],{"class":469},[459,1940,1941],{"class":591},"fillRoundRect",[459,1943,1944],{"class":469},"(x, y, w, h, ",[459,1946,858],{"class":526},[459,1948,855],{"class":469},[459,1950,858],{"class":526},[459,1952,1615],{"class":469},[459,1954,1956,1959,1962,1964,1967,1969,1972,1974],{"class":461,"line":1955},91,[459,1957,1958],{"class":591},"        installRPGBright",[459,1960,1961],{"class":469},"(g2, comboBox.",[459,1963,1900],{"class":591},[459,1965,1966],{"class":469},"(), comboBox.",[459,1968,1260],{"class":591},[459,1970,1971],{"class":469},"(), ",[459,1973,858],{"class":526},[459,1975,1615],{"class":469},[459,1977,1979,1981,1983,1985,1987],{"class":461,"line":1978},92,[459,1980,1817],{"class":469},[459,1982,1637],{"class":591},[459,1984,919],{"class":469},[459,1986,1643],{"class":591},[459,1988,702],{"class":469},[459,1990,1992,1994,1997,1999,2001],{"class":461,"line":1991},93,[459,1993,1817],{"class":469},[459,1995,1996],{"class":591},"setColor",[459,1998,919],{"class":469},[459,2000,936],{"class":591},[459,2002,702],{"class":469},[459,2004,2006,2009,2011,2014,2017,2019],{"class":461,"line":2005},94,[459,2007,2008],{"class":469},"        x ",[459,2010,1168],{"class":465},[459,2012,2013],{"class":469}," bounds.x ",[459,2015,2016],{"class":465},"+",[459,2018,1909],{"class":526},[459,2020,530],{"class":469},[459,2022,2024,2027,2029,2032,2035,2037,2039,2042,2044,2046,2048,2051,2054,2056,2059,2061,2064],{"class":461,"line":2023},95,[459,2025,2026],{"class":469},"        y ",[459,2028,1168],{"class":465},[459,2030,2031],{"class":469}," ((comboBox.",[459,2033,2034],{"class":591},"getFontMetrics",[459,2036,919],{"class":469},[459,2038,1643],{"class":591},[459,2040,2041],{"class":469},"()).",[459,2043,1260],{"class":591},[459,2045,1903],{"class":469},[459,2047,2016],{"class":465},[459,2049,2050],{"class":469}," bounds.y) ",[459,2052,2053],{"class":465},"\u002F",[459,2055,1868],{"class":526},[459,2057,2058],{"class":469},") ",[459,2060,2016],{"class":465},[459,2062,2063],{"class":526}," 10",[459,2065,530],{"class":469},[459,2067,2069,2072,2074],{"class":461,"line":2068},96,[459,2070,2071],{"class":469},"        w ",[459,2073,1168],{"class":465},[459,2075,2076],{"class":469}," bounds.width;\n",[459,2078,2080,2083,2085],{"class":461,"line":2079},97,[459,2081,2082],{"class":469},"        h ",[459,2084,1168],{"class":465},[459,2086,2087],{"class":469}," bounds.height;\n",[459,2089,2091,2093,2096,2099,2102,2104,2107,2109,2112],{"class":461,"line":2090},98,[459,2092,1817],{"class":469},[459,2094,2095],{"class":591},"drawString",[459,2097,2098],{"class":469},"(Objects.",[459,2100,2101],{"class":591},"requireNonNull",[459,2103,919],{"class":469},[459,2105,2106],{"class":591},"getSelectedItem",[459,2108,2041],{"class":469},[459,2110,2111],{"class":591},"toString",[459,2113,2114],{"class":469},"(), x, y);\n",[459,2116,2118,2120,2123],{"class":461,"line":2117},99,[459,2119,1817],{"class":469},[459,2121,2122],{"class":591},"dispose",[459,2124,908],{"class":469},[459,2126,2128],{"class":461,"line":2127},100,[459,2129,657],{"class":469},[459,2131,2133],{"class":461,"line":2132},101,[459,2134,477],{"emptyLinePlaceholder":476},[459,2136,2138,2140],{"class":461,"line":2137},102,[459,2139,668],{"class":469},[459,2141,671],{"class":465},[459,2143,2145,2147,2149,2152,2155,2158,2160,2163,2166,2168,2170,2173,2175,2177,2180],{"class":461,"line":2144},103,[459,2146,625],{"class":465},[459,2148,679],{"class":465},[459,2150,2151],{"class":591}," installRPGBright",[459,2153,2154],{"class":469},"(Graphics2D ",[459,2156,2157],{"class":638},"g2",[459,2159,855],{"class":469},[459,2161,2162],{"class":465},"int",[459,2164,2165],{"class":638}," w",[459,2167,855],{"class":469},[459,2169,2162],{"class":465},[459,2171,2172],{"class":638}," h",[459,2174,855],{"class":469},[459,2176,2162],{"class":465},[459,2178,2179],{"class":638}," radius",[459,2181,642],{"class":469},[459,2183,2185,2188,2190,2192,2194,2196,2199,2201,2203,2205,2207,2209,2212],{"class":461,"line":2184},104,[459,2186,2187],{"class":469},"        Color color ",[459,2189,1168],{"class":465},[459,2191,1171],{"class":465},[459,2193,1296],{"class":591},[459,2195,630],{"class":469},[459,2197,2198],{"class":526},"255",[459,2200,855],{"class":469},[459,2202,2198],{"class":526},[459,2204,855],{"class":469},[459,2206,2198],{"class":526},[459,2208,855],{"class":469},[459,2210,2211],{"class":526},"100",[459,2213,1615],{"class":469},[459,2215,2217,2220,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240,2242],{"class":461,"line":2216},105,[459,2218,2219],{"class":469},"        Color transparent ",[459,2221,1168],{"class":465},[459,2223,1171],{"class":465},[459,2225,1296],{"class":591},[459,2227,630],{"class":469},[459,2229,2198],{"class":526},[459,2231,855],{"class":469},[459,2233,2198],{"class":526},[459,2235,855],{"class":469},[459,2237,2198],{"class":526},[459,2239,855],{"class":469},[459,2241,858],{"class":526},[459,2243,1615],{"class":469},[459,2245,2247],{"class":461,"line":2246},106,[459,2248,2249],{"class":1224},"        \u002F\u002F ✨ Efecto de brillo superior (opcional pero muy RPG)\n",[459,2251,2253,2256,2258,2260,2263],{"class":461,"line":2252},107,[459,2254,2255],{"class":469},"        GradientPaint highlight ",[459,2257,1168],{"class":465},[459,2259,1171],{"class":465},[459,2261,2262],{"class":591}," GradientPaint",[459,2264,2265],{"class":469},"(\n",[459,2267,2269,2272,2274,2276],{"class":461,"line":2268},108,[459,2270,2271],{"class":526},"                0",[459,2273,855],{"class":469},[459,2275,858],{"class":526},[459,2277,2278],{"class":469},", color,\n",[459,2280,2282,2284,2287,2290,2293,2295,2298,2300,2302,2304],{"class":461,"line":2281},109,[459,2283,2271],{"class":526},[459,2285,2286],{"class":469},", (",[459,2288,2289],{"class":465},"float",[459,2291,2292],{"class":469},") (h ",[459,2294,1906],{"class":465},[459,2296,2297],{"class":526}," 6",[459,2299,2058],{"class":469},[459,2301,2053],{"class":465},[459,2303,1868],{"class":526},[459,2305,2306],{"class":469},", transparent\n",[459,2308,2310],{"class":461,"line":2309},110,[459,2311,2312],{"class":469},"        );\n",[459,2314,2316,2318,2320],{"class":461,"line":2315},111,[459,2317,1817],{"class":469},[459,2319,1847],{"class":591},[459,2321,2322],{"class":469},"(highlight);\n",[459,2324,2326,2328,2330,2332,2335,2337,2339,2342,2344,2347,2350,2352,2354],{"class":461,"line":2325},112,[459,2327,1817],{"class":469},[459,2329,1941],{"class":591},[459,2331,630],{"class":469},[459,2333,2334],{"class":526},"2",[459,2336,855],{"class":469},[459,2338,2334],{"class":526},[459,2340,2341],{"class":469},", w ",[459,2343,1906],{"class":465},[459,2345,2346],{"class":526}," 4",[459,2348,2349],{"class":469},", h ",[459,2351,2053],{"class":465},[459,2353,1868],{"class":526},[459,2355,2356],{"class":469},", radius, radius);\n",[459,2358,2360],{"class":461,"line":2359},113,[459,2361,657],{"class":469},[459,2363,2365],{"class":461,"line":2364},114,[459,2366,477],{"emptyLinePlaceholder":476},[459,2368,2370,2372],{"class":461,"line":2369},115,[459,2371,668],{"class":469},[459,2373,671],{"class":465},[459,2375,2377,2379,2382,2385],{"class":461,"line":2376},116,[459,2378,888],{"class":465},[459,2380,2381],{"class":469}," ComboPopup ",[459,2383,2384],{"class":591},"createPopup",[459,2386,685],{"class":469},[459,2388,2390,2392,2394,2396],{"class":461,"line":2389},117,[459,2391,1231],{"class":465},[459,2393,1171],{"class":465},[459,2395,796],{"class":591},[459,2397,1587],{"class":469},[459,2399,2401],{"class":461,"line":2400},118,[459,2402,657],{"class":469},[459,2404,2406],{"class":461,"line":2405},119,[459,2407,477],{"emptyLinePlaceholder":476},[459,2409,2411,2413],{"class":461,"line":2410},120,[459,2412,668],{"class":469},[459,2414,671],{"class":465},[459,2416,2418,2420,2423,2426],{"class":461,"line":2417},121,[459,2419,888],{"class":465},[459,2421,2422],{"class":469}," JButton ",[459,2424,2425],{"class":591},"createArrowButton",[459,2427,685],{"class":469},[459,2429,2431,2433,2436],{"class":461,"line":2430},122,[459,2432,1231],{"class":465},[459,2434,2435],{"class":526}," null",[459,2437,530],{"class":469},[459,2439,2441],{"class":461,"line":2440},123,[459,2442,657],{"class":469},[459,2444,2446],{"class":461,"line":2445},124,[459,2447,477],{"emptyLinePlaceholder":476},[459,2449,2451,2453],{"class":461,"line":2450},125,[459,2452,668],{"class":469},[459,2454,671],{"class":465},[459,2456,2458,2460,2462,2465],{"class":461,"line":2457},126,[459,2459,888],{"class":465},[459,2461,679],{"class":465},[459,2463,2464],{"class":591}," installListeners",[459,2466,685],{"class":469},[459,2468,2470,2472,2474,2477],{"class":461,"line":2469},127,[459,2471,648],{"class":526},[459,2473,902],{"class":469},[459,2475,2476],{"class":591},"installListeners",[459,2478,908],{"class":469},[459,2480,2482,2484,2487],{"class":461,"line":2481},128,[459,2483,1593],{"class":469},[459,2485,2486],{"class":591},"addMouseListener",[459,2488,2489],{"class":469},"(listener);\n",[459,2491,2493],{"class":461,"line":2492},129,[459,2494,657],{"class":469},[459,2496,2498],{"class":461,"line":2497},130,[459,2499,713],{"class":469},[423,2501,2502],{},"Como podrás notar, el delegate hace uso de una utilidad para el gradient, así como listener especial y un CellRenderer.",[423,2504,2505],{},"Ahora veamos el CellRenderer y el Listener.",[450,2507,2509],{"className":452,"code":2508,"language":454,"meta":455,"style":455},"package app.game.rpg.ui.components.delegates;\n\nimport app.game.rpg.ui.components.listeners.RPGMouseListener;\nimport app.game.rpg.utils.ColorPalette;\n\nimport javax.swing.*;\nimport javax.swing.border.EmptyBorder;\nimport javax.swing.plaf.ListUI;\nimport javax.swing.plaf.basic.BasicListUI;\nimport javax.swing.plaf.synth.SynthListUI;\nimport java.awt.*;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\nimport java.awt.event.MouseListener;\n\npublic class RPGCellRenderer extends DefaultListCellRenderer {\n\n    protected Color top;\n    protected Color bottom;\n\n    public Component getListCellRendererComponent(\n            JList\u003C?> list,\n            Object value,\n            int index,\n            boolean isSelected,\n            boolean cellHasFocus) {\n        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);\n        setBorder(new EmptyBorder(5, 5, 5, 5));\n        if (isSelected) {\n            top = ColorPalette.BLUE_TOP;\n            bottom = ColorPalette.BLUE_BOTTOM;\n        } else {\n            top = ColorPalette.GREEN_TOP;\n            bottom = ColorPalette.GREEN_BOTTOM;\n        }\n        return this;\n    }\n\n    @Override\n    protected void paintComponent(Graphics g) {\n        Graphics2D g2d = (Graphics2D) g;\n        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);\n        g2d.setPaint(getLinearGradientPaint());\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n        \u002F\u002F ✨ Efecto de brillo superior (opcional pero muy RPG)\n        GradientPaint highlight = new GradientPaint(\n                0, 0, new Color(255, 255, 255, 100),\n                0, (float) getHeight() \u002F 2, new Color(255, 255, 255, 0)\n        );\n        g2d.setPaint(highlight);\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n        super.paintComponent(g2d);\n        g2d.dispose();\n    }\n\n    private LinearGradientPaint getLinearGradientPaint() {\n\n        \u002F\u002F 🔵 Fondo degradado\n        return new LinearGradientPaint(0, 0, 0, getHeight(),\n                new float[]{0f, 0.25f, 1f}, new Color[]{top, bottom, top});\n    }\n}\n",[434,2510,2511,2517,2521,2527,2533,2537,2547,2553,2560,2567,2574,2584,2590,2596,2603,2607,2622,2626,2632,2638,2642,2654,2669,2679,2689,2699,2708,2719,2748,2755,2763,2771,2779,2788,2797,2801,2810,2814,2818,2824,2839,2849,2858,2866,2879,2904,2908,2920,2953,2996,3000,3008,3032,3044,3052,3056,3060,3072,3076,3080,3106,3132,3136],{"__ignoreMap":455},[459,2512,2513,2515],{"class":461,"line":462},[459,2514,466],{"class":465},[459,2516,964],{"class":469},[459,2518,2519],{"class":461,"line":473},[459,2520,477],{"emptyLinePlaceholder":476},[459,2522,2523,2525],{"class":461,"line":480},[459,2524,483],{"class":465},[459,2526,995],{"class":469},[459,2528,2529,2531],{"class":461,"line":489},[459,2530,483],{"class":465},[459,2532,1002],{"class":469},[459,2534,2535],{"class":461,"line":497},[459,2536,477],{"emptyLinePlaceholder":476},[459,2538,2539,2541,2543,2545],{"class":461,"line":505},[459,2540,483],{"class":465},[459,2542,523],{"class":469},[459,2544,527],{"class":526},[459,2546,530],{"class":469},[459,2548,2549,2551],{"class":461,"line":513},[459,2550,483],{"class":465},[459,2552,546],{"class":469},[459,2554,2555,2557],{"class":461,"line":518},[459,2556,483],{"class":465},[459,2558,2559],{"class":469}," javax.swing.plaf.ListUI;\n",[459,2561,2562,2564],{"class":461,"line":533},[459,2563,483],{"class":465},[459,2565,2566],{"class":469}," javax.swing.plaf.basic.BasicListUI;\n",[459,2568,2569,2571],{"class":461,"line":541},[459,2570,483],{"class":465},[459,2572,2573],{"class":469}," javax.swing.plaf.synth.SynthListUI;\n",[459,2575,2576,2578,2580,2582],{"class":461,"line":549},[459,2577,483],{"class":465},[459,2579,570],{"class":469},[459,2581,527],{"class":526},[459,2583,530],{"class":469},[459,2585,2586,2588],{"class":461,"line":557},[459,2587,483],{"class":465},[459,2589,1064],{"class":469},[459,2591,2592,2594],{"class":461,"line":565},[459,2593,483],{"class":465},[459,2595,1071],{"class":469},[459,2597,2598,2600],{"class":461,"line":577},[459,2599,483],{"class":465},[459,2601,2602],{"class":469}," java.awt.event.MouseListener;\n",[459,2604,2605],{"class":461,"line":582},[459,2606,477],{"emptyLinePlaceholder":476},[459,2608,2609,2611,2613,2615,2617,2620],{"class":461,"line":617},[459,2610,585],{"class":465},[459,2612,588],{"class":465},[459,2614,1739],{"class":591},[459,2616,799],{"class":465},[459,2618,2619],{"class":591}," DefaultListCellRenderer",[459,2621,805],{"class":469},[459,2623,2624],{"class":461,"line":622},[459,2625,477],{"emptyLinePlaceholder":476},[459,2627,2628,2630],{"class":461,"line":645},[459,2629,888],{"class":465},[459,2631,1131],{"class":469},[459,2633,2634,2636],{"class":461,"line":654},[459,2635,888],{"class":465},[459,2637,1138],{"class":469},[459,2639,2640],{"class":461,"line":660},[459,2641,477],{"emptyLinePlaceholder":476},[459,2643,2644,2646,2649,2652],{"class":461,"line":665},[459,2645,625],{"class":465},[459,2647,2648],{"class":469}," Component ",[459,2650,2651],{"class":591},"getListCellRendererComponent",[459,2653,2265],{"class":469},[459,2655,2656,2659,2662,2664,2667],{"class":461,"line":674},[459,2657,2658],{"class":469},"            JList\u003C",[459,2660,2661],{"class":465},"?",[459,2663,601],{"class":469},[459,2665,2666],{"class":638},"list",[459,2668,1251],{"class":469},[459,2670,2671,2674,2677],{"class":461,"line":688},[459,2672,2673],{"class":469},"            Object ",[459,2675,2676],{"class":638},"value",[459,2678,1251],{"class":469},[459,2680,2681,2684,2687],{"class":461,"line":705},[459,2682,2683],{"class":465},"            int",[459,2685,2686],{"class":638}," index",[459,2688,1251],{"class":469},[459,2690,2691,2694,2697],{"class":461,"line":710},[459,2692,2693],{"class":465},"            boolean",[459,2695,2696],{"class":638}," isSelected",[459,2698,1251],{"class":469},[459,2700,2701,2703,2706],{"class":461,"line":1141},[459,2702,2693],{"class":465},[459,2704,2705],{"class":638}," cellHasFocus",[459,2707,642],{"class":469},[459,2709,2710,2712,2714,2716],{"class":461,"line":1149},[459,2711,648],{"class":526},[459,2713,902],{"class":469},[459,2715,2651],{"class":591},[459,2717,2718],{"class":469},"(list, value, index, isSelected, cellHasFocus);\n",[459,2720,2721,2723,2725,2727,2730,2732,2734,2736,2738,2740,2742,2744,2746],{"class":461,"line":1177},[459,2722,840],{"class":591},[459,2724,630],{"class":469},[459,2726,696],{"class":465},[459,2728,2729],{"class":591}," EmptyBorder",[459,2731,630],{"class":469},[459,2733,1685],{"class":526},[459,2735,855],{"class":469},[459,2737,1685],{"class":526},[459,2739,855],{"class":469},[459,2741,1685],{"class":526},[459,2743,855],{"class":469},[459,2745,1685],{"class":526},[459,2747,861],{"class":469},[459,2749,2750,2752],{"class":461,"line":1182},[459,2751,1334],{"class":465},[459,2753,2754],{"class":469}," (isSelected) {\n",[459,2756,2757,2759,2761],{"class":461,"line":1187},[459,2758,1349],{"class":469},[459,2760,1168],{"class":465},[459,2762,1423],{"class":469},[459,2764,2765,2767,2769],{"class":461,"line":1194},[459,2766,1360],{"class":469},[459,2768,1168],{"class":465},[459,2770,1433],{"class":469},[459,2772,2773,2775,2777],{"class":461,"line":1213},[459,2774,1371],{"class":469},[459,2776,1374],{"class":465},[459,2778,805],{"class":469},[459,2780,2781,2783,2785],{"class":461,"line":1221},[459,2782,1349],{"class":469},[459,2784,1168],{"class":465},[459,2786,2787],{"class":469}," ColorPalette.GREEN_TOP;\n",[459,2789,2790,2792,2794],{"class":461,"line":1228},[459,2791,1360],{"class":469},[459,2793,1168],{"class":465},[459,2795,2796],{"class":469}," ColorPalette.GREEN_BOTTOM;\n",[459,2798,2799],{"class":461,"line":1254},[459,2800,1439],{"class":469},[459,2802,2803,2805,2808],{"class":461,"line":1266},[459,2804,1231],{"class":465},[459,2806,2807],{"class":526}," this",[459,2809,530],{"class":469},[459,2811,2812],{"class":461,"line":1302},[459,2813,657],{"class":469},[459,2815,2816],{"class":461,"line":1307},[459,2817,477],{"emptyLinePlaceholder":476},[459,2819,2820,2822],{"class":461,"line":1312},[459,2821,668],{"class":469},[459,2823,671],{"class":465},[459,2825,2826,2828,2830,2833,2835,2837],{"class":461,"line":1319},[459,2827,888],{"class":465},[459,2829,679],{"class":465},[459,2831,2832],{"class":591}," paintComponent",[459,2834,1771],{"class":469},[459,2836,1774],{"class":638},[459,2838,642],{"class":469},[459,2840,2841,2844,2846],{"class":461,"line":1331},[459,2842,2843],{"class":469},"        Graphics2D g2d ",[459,2845,1168],{"class":465},[459,2847,2848],{"class":469}," (Graphics2D) g;\n",[459,2850,2851,2854,2856],{"class":461,"line":1346},[459,2852,2853],{"class":469},"        g2d.",[459,2855,1820],{"class":591},[459,2857,1823],{"class":469},[459,2859,2860,2862,2864],{"class":461,"line":1357},[459,2861,2853],{"class":469},[459,2863,1820],{"class":591},[459,2865,1833],{"class":469},[459,2867,2868,2870,2872,2874,2877],{"class":461,"line":1368},[459,2869,2853],{"class":469},[459,2871,1847],{"class":591},[459,2873,630],{"class":469},[459,2875,2876],{"class":591},"getLinearGradientPaint",[459,2878,702],{"class":469},[459,2880,2881,2883,2886,2888,2890,2892,2894,2896,2898,2900,2902],{"class":461,"line":1387},[459,2882,2853],{"class":469},[459,2884,2885],{"class":591},"fillRect",[459,2887,630],{"class":469},[459,2889,858],{"class":526},[459,2891,855],{"class":469},[459,2893,858],{"class":526},[459,2895,855],{"class":469},[459,2897,1900],{"class":591},[459,2899,1971],{"class":469},[459,2901,1260],{"class":591},[459,2903,702],{"class":469},[459,2905,2906],{"class":461,"line":1397},[459,2907,2249],{"class":1224},[459,2909,2910,2912,2914,2916,2918],{"class":461,"line":1407},[459,2911,2255],{"class":469},[459,2913,1168],{"class":465},[459,2915,1171],{"class":465},[459,2917,2262],{"class":591},[459,2919,2265],{"class":469},[459,2921,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948,2950],{"class":461,"line":1416},[459,2923,2271],{"class":526},[459,2925,855],{"class":469},[459,2927,858],{"class":526},[459,2929,855],{"class":469},[459,2931,696],{"class":465},[459,2933,1296],{"class":591},[459,2935,630],{"class":469},[459,2937,2198],{"class":526},[459,2939,855],{"class":469},[459,2941,2198],{"class":526},[459,2943,855],{"class":469},[459,2945,2198],{"class":526},[459,2947,855],{"class":469},[459,2949,2211],{"class":526},[459,2951,2952],{"class":469},"),\n",[459,2954,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993],{"class":461,"line":1426},[459,2956,2271],{"class":526},[459,2958,2286],{"class":469},[459,2960,2289],{"class":465},[459,2962,2058],{"class":469},[459,2964,1260],{"class":591},[459,2966,1903],{"class":469},[459,2968,2053],{"class":465},[459,2970,1868],{"class":526},[459,2972,855],{"class":469},[459,2974,696],{"class":465},[459,2976,1296],{"class":591},[459,2978,630],{"class":469},[459,2980,2198],{"class":526},[459,2982,855],{"class":469},[459,2984,2198],{"class":526},[459,2986,855],{"class":469},[459,2988,2198],{"class":526},[459,2990,855],{"class":469},[459,2992,858],{"class":526},[459,2994,2995],{"class":469},")\n",[459,2997,2998],{"class":461,"line":1436},[459,2999,2312],{"class":469},[459,3001,3002,3004,3006],{"class":461,"line":1442},[459,3003,2853],{"class":469},[459,3005,1847],{"class":591},[459,3007,2322],{"class":469},[459,3009,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030],{"class":461,"line":1447},[459,3011,2853],{"class":469},[459,3013,2885],{"class":591},[459,3015,630],{"class":469},[459,3017,858],{"class":526},[459,3019,855],{"class":469},[459,3021,858],{"class":526},[459,3023,855],{"class":469},[459,3025,1900],{"class":591},[459,3027,1971],{"class":469},[459,3029,1260],{"class":591},[459,3031,702],{"class":469},[459,3033,3034,3036,3038,3041],{"class":461,"line":1452},[459,3035,648],{"class":526},[459,3037,902],{"class":469},[459,3039,3040],{"class":591},"paintComponent",[459,3042,3043],{"class":469},"(g2d);\n",[459,3045,3046,3048,3050],{"class":461,"line":1459},[459,3047,2853],{"class":469},[459,3049,2122],{"class":591},[459,3051,908],{"class":469},[459,3053,3054],{"class":461,"line":1471},[459,3055,657],{"class":469},[459,3057,3058],{"class":461,"line":1483},[459,3059,477],{"emptyLinePlaceholder":476},[459,3061,3062,3065,3068,3070],{"class":461,"line":1493},[459,3063,3064],{"class":465},"    private",[459,3066,3067],{"class":469}," LinearGradientPaint ",[459,3069,2876],{"class":591},[459,3071,685],{"class":469},[459,3073,3074],{"class":461,"line":1503},[459,3075,477],{"emptyLinePlaceholder":476},[459,3077,3078],{"class":461,"line":1513},[459,3079,1225],{"class":1224},[459,3081,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100,3102,3104],{"class":461,"line":1523},[459,3083,1231],{"class":465},[459,3085,1171],{"class":465},[459,3087,1236],{"class":591},[459,3089,630],{"class":469},[459,3091,858],{"class":526},[459,3093,855],{"class":469},[459,3095,858],{"class":526},[459,3097,855],{"class":469},[459,3099,858],{"class":526},[459,3101,855],{"class":469},[459,3103,1260],{"class":591},[459,3105,1263],{"class":469},[459,3107,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130],{"class":461,"line":1533},[459,3109,1269],{"class":465},[459,3111,1272],{"class":465},[459,3113,1275],{"class":469},[459,3115,1278],{"class":526},[459,3117,855],{"class":469},[459,3119,1283],{"class":526},[459,3121,855],{"class":469},[459,3123,1288],{"class":526},[459,3125,1291],{"class":469},[459,3127,696],{"class":465},[459,3129,1296],{"class":465},[459,3131,1299],{"class":469},[459,3133,3134],{"class":461,"line":1538},[459,3135,657],{"class":469},[459,3137,3138],{"class":461,"line":1543},[459,3139,713],{"class":469},[423,3141,3142],{},"El CellRenderer hace uso de un efecto de brillo superior, lo que le da un aspecto más RPG.",[423,3144,3145],{},"Ahora veamos el Listener.",[450,3147,3149],{"className":452,"code":3148,"language":454,"meta":455,"style":455},"package app.game.rpg.ui.components.listeners;\n\nimport javax.swing.*;\nimport java.awt.event.MouseAdapter;\nimport java.awt.event.MouseEvent;\n\npublic class RPGMouseListener extends MouseAdapter {\n    protected boolean hover = false;\n    protected boolean pressed = false;\n    protected JComponent component;\n\n    public RPGMouseListener(JComponent component) {\n        this.component = component;\n    }\n\n    @Override\n    public void mouseEntered(MouseEvent e) {\n        hover = true;\n        component.repaint();\n    }\n\n    @Override\n    public void mouseExited(MouseEvent e) {\n        hover = false;\n        pressed = false;\n        component.repaint();\n    }\n\n    @Override\n    public void mousePressed(MouseEvent e) {\n        pressed = true;\n        component.repaint();\n    }\n\n    @Override\n    public void mouseReleased(MouseEvent e) {\n        pressed = false;\n        component.repaint();\n    }\n\n    public boolean isHover() {\n        return hover;\n    }\n\n    public boolean isPressed() {\n        return pressed;\n    }\n}\n",[434,3150,3151,3158,3162,3172,3178,3184,3188,3203,3220,3235,3242,3246,3259,3272,3276,3280,3286,3303,3315,3325,3329,3333,3339,3354,3364,3375,3383,3387,3391,3397,3412,3422,3430,3434,3438,3444,3459,3469,3477,3481,3485,3496,3503,3507,3511,3522,3529,3533],{"__ignoreMap":455},[459,3152,3153,3155],{"class":461,"line":462},[459,3154,466],{"class":465},[459,3156,3157],{"class":469}," app.game.rpg.ui.components.listeners;\n",[459,3159,3160],{"class":461,"line":473},[459,3161,477],{"emptyLinePlaceholder":476},[459,3163,3164,3166,3168,3170],{"class":461,"line":480},[459,3165,483],{"class":465},[459,3167,523],{"class":469},[459,3169,527],{"class":526},[459,3171,530],{"class":469},[459,3173,3174,3176],{"class":461,"line":489},[459,3175,483],{"class":465},[459,3177,1064],{"class":469},[459,3179,3180,3182],{"class":461,"line":497},[459,3181,483],{"class":465},[459,3183,1071],{"class":469},[459,3185,3186],{"class":461,"line":505},[459,3187,477],{"emptyLinePlaceholder":476},[459,3189,3190,3192,3194,3196,3198,3201],{"class":461,"line":513},[459,3191,585],{"class":465},[459,3193,588],{"class":465},[459,3195,1584],{"class":591},[459,3197,799],{"class":465},[459,3199,3200],{"class":591}," MouseAdapter",[459,3202,805],{"class":469},[459,3204,3205,3207,3210,3213,3215,3218],{"class":461,"line":518},[459,3206,888],{"class":465},[459,3208,3209],{"class":465}," boolean",[459,3211,3212],{"class":469}," hover ",[459,3214,1168],{"class":465},[459,3216,3217],{"class":526}," false",[459,3219,530],{"class":469},[459,3221,3222,3224,3226,3229,3231,3233],{"class":461,"line":533},[459,3223,888],{"class":465},[459,3225,3209],{"class":465},[459,3227,3228],{"class":469}," pressed ",[459,3230,1168],{"class":465},[459,3232,3217],{"class":526},[459,3234,530],{"class":469},[459,3236,3237,3239],{"class":461,"line":541},[459,3238,888],{"class":465},[459,3240,3241],{"class":469}," JComponent component;\n",[459,3243,3244],{"class":461,"line":549},[459,3245,477],{"emptyLinePlaceholder":476},[459,3247,3248,3250,3252,3254,3257],{"class":461,"line":557},[459,3249,625],{"class":465},[459,3251,1584],{"class":591},[459,3253,1205],{"class":469},[459,3255,3256],{"class":638},"component",[459,3258,642],{"class":469},[459,3260,3261,3264,3267,3269],{"class":461,"line":565},[459,3262,3263],{"class":526},"        this",[459,3265,3266],{"class":469},".component ",[459,3268,1168],{"class":465},[459,3270,3271],{"class":469}," component;\n",[459,3273,3274],{"class":461,"line":577},[459,3275,657],{"class":469},[459,3277,3278],{"class":461,"line":582},[459,3279,477],{"emptyLinePlaceholder":476},[459,3281,3282,3284],{"class":461,"line":617},[459,3283,668],{"class":469},[459,3285,671],{"class":465},[459,3287,3288,3290,3292,3295,3298,3301],{"class":461,"line":622},[459,3289,625],{"class":465},[459,3291,679],{"class":465},[459,3293,3294],{"class":591}," mouseEntered",[459,3296,3297],{"class":469},"(MouseEvent ",[459,3299,3300],{"class":638},"e",[459,3302,642],{"class":469},[459,3304,3305,3308,3310,3313],{"class":461,"line":645},[459,3306,3307],{"class":469},"        hover ",[459,3309,1168],{"class":465},[459,3311,3312],{"class":526}," true",[459,3314,530],{"class":469},[459,3316,3317,3320,3323],{"class":461,"line":654},[459,3318,3319],{"class":469},"        component.",[459,3321,3322],{"class":591},"repaint",[459,3324,908],{"class":469},[459,3326,3327],{"class":461,"line":660},[459,3328,657],{"class":469},[459,3330,3331],{"class":461,"line":665},[459,3332,477],{"emptyLinePlaceholder":476},[459,3334,3335,3337],{"class":461,"line":674},[459,3336,668],{"class":469},[459,3338,671],{"class":465},[459,3340,3341,3343,3345,3348,3350,3352],{"class":461,"line":688},[459,3342,625],{"class":465},[459,3344,679],{"class":465},[459,3346,3347],{"class":591}," mouseExited",[459,3349,3297],{"class":469},[459,3351,3300],{"class":638},[459,3353,642],{"class":469},[459,3355,3356,3358,3360,3362],{"class":461,"line":705},[459,3357,3307],{"class":469},[459,3359,1168],{"class":465},[459,3361,3217],{"class":526},[459,3363,530],{"class":469},[459,3365,3366,3369,3371,3373],{"class":461,"line":710},[459,3367,3368],{"class":469},"        pressed ",[459,3370,1168],{"class":465},[459,3372,3217],{"class":526},[459,3374,530],{"class":469},[459,3376,3377,3379,3381],{"class":461,"line":1141},[459,3378,3319],{"class":469},[459,3380,3322],{"class":591},[459,3382,908],{"class":469},[459,3384,3385],{"class":461,"line":1149},[459,3386,657],{"class":469},[459,3388,3389],{"class":461,"line":1177},[459,3390,477],{"emptyLinePlaceholder":476},[459,3392,3393,3395],{"class":461,"line":1182},[459,3394,668],{"class":469},[459,3396,671],{"class":465},[459,3398,3399,3401,3403,3406,3408,3410],{"class":461,"line":1187},[459,3400,625],{"class":465},[459,3402,679],{"class":465},[459,3404,3405],{"class":591}," mousePressed",[459,3407,3297],{"class":469},[459,3409,3300],{"class":638},[459,3411,642],{"class":469},[459,3413,3414,3416,3418,3420],{"class":461,"line":1194},[459,3415,3368],{"class":469},[459,3417,1168],{"class":465},[459,3419,3312],{"class":526},[459,3421,530],{"class":469},[459,3423,3424,3426,3428],{"class":461,"line":1213},[459,3425,3319],{"class":469},[459,3427,3322],{"class":591},[459,3429,908],{"class":469},[459,3431,3432],{"class":461,"line":1221},[459,3433,657],{"class":469},[459,3435,3436],{"class":461,"line":1228},[459,3437,477],{"emptyLinePlaceholder":476},[459,3439,3440,3442],{"class":461,"line":1254},[459,3441,668],{"class":469},[459,3443,671],{"class":465},[459,3445,3446,3448,3450,3453,3455,3457],{"class":461,"line":1266},[459,3447,625],{"class":465},[459,3449,679],{"class":465},[459,3451,3452],{"class":591}," mouseReleased",[459,3454,3297],{"class":469},[459,3456,3300],{"class":638},[459,3458,642],{"class":469},[459,3460,3461,3463,3465,3467],{"class":461,"line":1302},[459,3462,3368],{"class":469},[459,3464,1168],{"class":465},[459,3466,3217],{"class":526},[459,3468,530],{"class":469},[459,3470,3471,3473,3475],{"class":461,"line":1307},[459,3472,3319],{"class":469},[459,3474,3322],{"class":591},[459,3476,908],{"class":469},[459,3478,3479],{"class":461,"line":1312},[459,3480,657],{"class":469},[459,3482,3483],{"class":461,"line":1319},[459,3484,477],{"emptyLinePlaceholder":476},[459,3486,3487,3489,3491,3494],{"class":461,"line":1331},[459,3488,625],{"class":465},[459,3490,3209],{"class":465},[459,3492,3493],{"class":591}," isHover",[459,3495,685],{"class":469},[459,3497,3498,3500],{"class":461,"line":1346},[459,3499,1231],{"class":465},[459,3501,3502],{"class":469}," hover;\n",[459,3504,3505],{"class":461,"line":1357},[459,3506,657],{"class":469},[459,3508,3509],{"class":461,"line":1368},[459,3510,477],{"emptyLinePlaceholder":476},[459,3512,3513,3515,3517,3520],{"class":461,"line":1387},[459,3514,625],{"class":465},[459,3516,3209],{"class":465},[459,3518,3519],{"class":591}," isPressed",[459,3521,685],{"class":469},[459,3523,3524,3526],{"class":461,"line":1397},[459,3525,1231],{"class":465},[459,3527,3528],{"class":469}," pressed;\n",[459,3530,3531],{"class":461,"line":1407},[459,3532,657],{"class":469},[459,3534,3535],{"class":461,"line":1416},[459,3536,713],{"class":469},[423,3538,3539],{},"Ten en cuenta que el listener es un componente especial que se encarga de los eventos de mouse y los estados de hover y pressed.",[423,3541,3542],{},"Así mismo te presento la clase encargada de los colores.",[450,3544,3546],{"className":452,"code":3545,"language":454,"meta":455,"style":455},"package app.game.rpg.utils;\n\nimport java.awt.*;\n\npublic class ColorPalette {\n\n    public static Color GREEN_TOP = new Color(35, 165, 35);\n    public static Color GREEN_BOTTOM = new Color(15, 73, 15);\n\n    public static Color GREEN_HOVER_TOP = GREEN_TOP.brighter();\n    public static Color GREEN_HOVER_BOTTOM = GREEN_BOTTOM.brighter();\n\n    public static Color GREEN_PRESSED_TOP = GREEN_TOP.darker();\n    public static Color GREEN_PRESSED_BOTTOM = GREEN_BOTTOM.darker();\n\n    public static Color RED_TOP = new Color(191, 37, 37);\n    public static Color RED_BOTTOM = new Color(80, 16, 16);\n\n    public static Color RED_HOVER_TOP = RED_TOP.brighter();\n    public static Color RED_HOVER_BOTTOM = RED_BOTTOM.brighter();\n\n    public static Color RED_PRESSED_TOP = RED_TOP.darker();\n    public static Color RED_PRESSED_BOTTOM = RED_BOTTOM.darker();\n\n    public static Color BLUE_TOP = new Color(10, 111, 178);\n    public static Color BLUE_BOTTOM = new Color(5, 55, 89);\n\n    public static Color BLUE_HOVER_TOP = BLUE_TOP.brighter();\n    public static Color BLUE_HOVER_BOTTOM = BLUE_BOTTOM.brighter();\n\n    public static Color BLUE_PRESSED_TOP = BLUE_TOP.darker();\n    public static Color BLUE_PRESSED_BOTTOM = BLUE_BOTTOM.darker();\n\n    public static Color BORDER_LIGHT = new Color(255, 215, 0);\n    public static Color BORDER_DARK = new Color(128, 64, 0);\n}\n",[434,3547,3548,3555,3559,3569,3573,3584,3588,3619,3650,3654,3673,3691,3695,3713,3730,3734,3765,3796,3800,3818,3836,3840,3857,3874,3878,3910,3941,3945,3963,3981,3985,4002,4019,4023,4053,4084],{"__ignoreMap":455},[459,3549,3550,3552],{"class":461,"line":462},[459,3551,466],{"class":465},[459,3553,3554],{"class":469}," app.game.rpg.utils;\n",[459,3556,3557],{"class":461,"line":473},[459,3558,477],{"emptyLinePlaceholder":476},[459,3560,3561,3563,3565,3567],{"class":461,"line":480},[459,3562,483],{"class":465},[459,3564,570],{"class":469},[459,3566,527],{"class":526},[459,3568,530],{"class":469},[459,3570,3571],{"class":461,"line":489},[459,3572,477],{"emptyLinePlaceholder":476},[459,3574,3575,3577,3579,3582],{"class":461,"line":497},[459,3576,585],{"class":465},[459,3578,588],{"class":465},[459,3580,3581],{"class":591}," ColorPalette",[459,3583,805],{"class":469},[459,3585,3586],{"class":461,"line":505},[459,3587,477],{"emptyLinePlaceholder":476},[459,3589,3590,3592,3594,3597,3599,3601,3603,3605,3608,3610,3613,3615,3617],{"class":461,"line":513},[459,3591,625],{"class":465},[459,3593,1096],{"class":465},[459,3595,3596],{"class":469}," Color GREEN_TOP ",[459,3598,1168],{"class":465},[459,3600,1171],{"class":465},[459,3602,1296],{"class":591},[459,3604,630],{"class":469},[459,3606,3607],{"class":526},"35",[459,3609,855],{"class":469},[459,3611,3612],{"class":526},"165",[459,3614,855],{"class":469},[459,3616,3607],{"class":526},[459,3618,1615],{"class":469},[459,3620,3621,3623,3625,3628,3630,3632,3634,3636,3639,3641,3644,3646,3648],{"class":461,"line":518},[459,3622,625],{"class":465},[459,3624,1096],{"class":465},[459,3626,3627],{"class":469}," Color GREEN_BOTTOM ",[459,3629,1168],{"class":465},[459,3631,1171],{"class":465},[459,3633,1296],{"class":591},[459,3635,630],{"class":469},[459,3637,3638],{"class":526},"15",[459,3640,855],{"class":469},[459,3642,3643],{"class":526},"73",[459,3645,855],{"class":469},[459,3647,3638],{"class":526},[459,3649,1615],{"class":469},[459,3651,3652],{"class":461,"line":533},[459,3653,477],{"emptyLinePlaceholder":476},[459,3655,3656,3658,3660,3663,3665,3668,3671],{"class":461,"line":541},[459,3657,625],{"class":465},[459,3659,1096],{"class":465},[459,3661,3662],{"class":469}," Color GREEN_HOVER_TOP ",[459,3664,1168],{"class":465},[459,3666,3667],{"class":469}," GREEN_TOP.",[459,3669,3670],{"class":591},"brighter",[459,3672,908],{"class":469},[459,3674,3675,3677,3679,3682,3684,3687,3689],{"class":461,"line":549},[459,3676,625],{"class":465},[459,3678,1096],{"class":465},[459,3680,3681],{"class":469}," Color GREEN_HOVER_BOTTOM ",[459,3683,1168],{"class":465},[459,3685,3686],{"class":469}," GREEN_BOTTOM.",[459,3688,3670],{"class":591},[459,3690,908],{"class":469},[459,3692,3693],{"class":461,"line":557},[459,3694,477],{"emptyLinePlaceholder":476},[459,3696,3697,3699,3701,3704,3706,3708,3711],{"class":461,"line":565},[459,3698,625],{"class":465},[459,3700,1096],{"class":465},[459,3702,3703],{"class":469}," Color GREEN_PRESSED_TOP ",[459,3705,1168],{"class":465},[459,3707,3667],{"class":469},[459,3709,3710],{"class":591},"darker",[459,3712,908],{"class":469},[459,3714,3715,3717,3719,3722,3724,3726,3728],{"class":461,"line":577},[459,3716,625],{"class":465},[459,3718,1096],{"class":465},[459,3720,3721],{"class":469}," Color GREEN_PRESSED_BOTTOM ",[459,3723,1168],{"class":465},[459,3725,3686],{"class":469},[459,3727,3710],{"class":591},[459,3729,908],{"class":469},[459,3731,3732],{"class":461,"line":582},[459,3733,477],{"emptyLinePlaceholder":476},[459,3735,3736,3738,3740,3743,3745,3747,3749,3751,3754,3756,3759,3761,3763],{"class":461,"line":617},[459,3737,625],{"class":465},[459,3739,1096],{"class":465},[459,3741,3742],{"class":469}," Color RED_TOP ",[459,3744,1168],{"class":465},[459,3746,1171],{"class":465},[459,3748,1296],{"class":591},[459,3750,630],{"class":469},[459,3752,3753],{"class":526},"191",[459,3755,855],{"class":469},[459,3757,3758],{"class":526},"37",[459,3760,855],{"class":469},[459,3762,3758],{"class":526},[459,3764,1615],{"class":469},[459,3766,3767,3769,3771,3774,3776,3778,3780,3782,3785,3787,3790,3792,3794],{"class":461,"line":622},[459,3768,625],{"class":465},[459,3770,1096],{"class":465},[459,3772,3773],{"class":469}," Color RED_BOTTOM ",[459,3775,1168],{"class":465},[459,3777,1171],{"class":465},[459,3779,1296],{"class":591},[459,3781,630],{"class":469},[459,3783,3784],{"class":526},"80",[459,3786,855],{"class":469},[459,3788,3789],{"class":526},"16",[459,3791,855],{"class":469},[459,3793,3789],{"class":526},[459,3795,1615],{"class":469},[459,3797,3798],{"class":461,"line":645},[459,3799,477],{"emptyLinePlaceholder":476},[459,3801,3802,3804,3806,3809,3811,3814,3816],{"class":461,"line":654},[459,3803,625],{"class":465},[459,3805,1096],{"class":465},[459,3807,3808],{"class":469}," Color RED_HOVER_TOP ",[459,3810,1168],{"class":465},[459,3812,3813],{"class":469}," RED_TOP.",[459,3815,3670],{"class":591},[459,3817,908],{"class":469},[459,3819,3820,3822,3824,3827,3829,3832,3834],{"class":461,"line":660},[459,3821,625],{"class":465},[459,3823,1096],{"class":465},[459,3825,3826],{"class":469}," Color RED_HOVER_BOTTOM ",[459,3828,1168],{"class":465},[459,3830,3831],{"class":469}," RED_BOTTOM.",[459,3833,3670],{"class":591},[459,3835,908],{"class":469},[459,3837,3838],{"class":461,"line":665},[459,3839,477],{"emptyLinePlaceholder":476},[459,3841,3842,3844,3846,3849,3851,3853,3855],{"class":461,"line":674},[459,3843,625],{"class":465},[459,3845,1096],{"class":465},[459,3847,3848],{"class":469}," Color RED_PRESSED_TOP ",[459,3850,1168],{"class":465},[459,3852,3813],{"class":469},[459,3854,3710],{"class":591},[459,3856,908],{"class":469},[459,3858,3859,3861,3863,3866,3868,3870,3872],{"class":461,"line":688},[459,3860,625],{"class":465},[459,3862,1096],{"class":465},[459,3864,3865],{"class":469}," Color RED_PRESSED_BOTTOM ",[459,3867,1168],{"class":465},[459,3869,3831],{"class":469},[459,3871,3710],{"class":591},[459,3873,908],{"class":469},[459,3875,3876],{"class":461,"line":705},[459,3877,477],{"emptyLinePlaceholder":476},[459,3879,3880,3882,3884,3887,3889,3891,3893,3895,3898,3900,3903,3905,3908],{"class":461,"line":710},[459,3881,625],{"class":465},[459,3883,1096],{"class":465},[459,3885,3886],{"class":469}," Color BLUE_TOP ",[459,3888,1168],{"class":465},[459,3890,1171],{"class":465},[459,3892,1296],{"class":591},[459,3894,630],{"class":469},[459,3896,3897],{"class":526},"10",[459,3899,855],{"class":469},[459,3901,3902],{"class":526},"111",[459,3904,855],{"class":469},[459,3906,3907],{"class":526},"178",[459,3909,1615],{"class":469},[459,3911,3912,3914,3916,3919,3921,3923,3925,3927,3929,3931,3934,3936,3939],{"class":461,"line":1141},[459,3913,625],{"class":465},[459,3915,1096],{"class":465},[459,3917,3918],{"class":469}," Color BLUE_BOTTOM ",[459,3920,1168],{"class":465},[459,3922,1171],{"class":465},[459,3924,1296],{"class":591},[459,3926,630],{"class":469},[459,3928,1685],{"class":526},[459,3930,855],{"class":469},[459,3932,3933],{"class":526},"55",[459,3935,855],{"class":469},[459,3937,3938],{"class":526},"89",[459,3940,1615],{"class":469},[459,3942,3943],{"class":461,"line":1149},[459,3944,477],{"emptyLinePlaceholder":476},[459,3946,3947,3949,3951,3954,3956,3959,3961],{"class":461,"line":1177},[459,3948,625],{"class":465},[459,3950,1096],{"class":465},[459,3952,3953],{"class":469}," Color BLUE_HOVER_TOP ",[459,3955,1168],{"class":465},[459,3957,3958],{"class":469}," BLUE_TOP.",[459,3960,3670],{"class":591},[459,3962,908],{"class":469},[459,3964,3965,3967,3969,3972,3974,3977,3979],{"class":461,"line":1182},[459,3966,625],{"class":465},[459,3968,1096],{"class":465},[459,3970,3971],{"class":469}," Color BLUE_HOVER_BOTTOM ",[459,3973,1168],{"class":465},[459,3975,3976],{"class":469}," BLUE_BOTTOM.",[459,3978,3670],{"class":591},[459,3980,908],{"class":469},[459,3982,3983],{"class":461,"line":1187},[459,3984,477],{"emptyLinePlaceholder":476},[459,3986,3987,3989,3991,3994,3996,3998,4000],{"class":461,"line":1194},[459,3988,625],{"class":465},[459,3990,1096],{"class":465},[459,3992,3993],{"class":469}," Color BLUE_PRESSED_TOP ",[459,3995,1168],{"class":465},[459,3997,3958],{"class":469},[459,3999,3710],{"class":591},[459,4001,908],{"class":469},[459,4003,4004,4006,4008,4011,4013,4015,4017],{"class":461,"line":1213},[459,4005,625],{"class":465},[459,4007,1096],{"class":465},[459,4009,4010],{"class":469}," Color BLUE_PRESSED_BOTTOM ",[459,4012,1168],{"class":465},[459,4014,3976],{"class":469},[459,4016,3710],{"class":591},[459,4018,908],{"class":469},[459,4020,4021],{"class":461,"line":1221},[459,4022,477],{"emptyLinePlaceholder":476},[459,4024,4025,4027,4029,4032,4034,4036,4038,4040,4042,4044,4047,4049,4051],{"class":461,"line":1228},[459,4026,625],{"class":465},[459,4028,1096],{"class":465},[459,4030,4031],{"class":469}," Color BORDER_LIGHT ",[459,4033,1168],{"class":465},[459,4035,1171],{"class":465},[459,4037,1296],{"class":591},[459,4039,630],{"class":469},[459,4041,2198],{"class":526},[459,4043,855],{"class":469},[459,4045,4046],{"class":526},"215",[459,4048,855],{"class":469},[459,4050,858],{"class":526},[459,4052,1615],{"class":469},[459,4054,4055,4057,4059,4062,4064,4066,4068,4070,4073,4075,4078,4080,4082],{"class":461,"line":1254},[459,4056,625],{"class":465},[459,4058,1096],{"class":465},[459,4060,4061],{"class":469}," Color BORDER_DARK ",[459,4063,1168],{"class":465},[459,4065,1171],{"class":465},[459,4067,1296],{"class":591},[459,4069,630],{"class":469},[459,4071,4072],{"class":526},"128",[459,4074,855],{"class":469},[459,4076,4077],{"class":526},"64",[459,4079,855],{"class":469},[459,4081,858],{"class":526},[459,4083,1615],{"class":469},[459,4085,4086],{"class":461,"line":1266},[459,4087,713],{"class":469},[418,4089,4091],{"id":4090},"conclusión","Conclusión",[423,4093,4094],{},"Como podrás notar el ComboBox resulta un tanto particular al involucrar varios elementos que son necesarios para su funcionamiento. Sin embargo, al comprender como trabaja el componente, es más fácil de usar y personalizar.",[4096,4097,4098],"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 .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}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}",{"title":455,"searchDepth":473,"depth":473,"links":4100},[4101,4102,4105],{"id":420,"depth":473,"text":421},{"id":428,"depth":473,"text":429,"children":4103},[4104],{"id":441,"depth":480,"text":442},{"id":4090,"depth":473,"text":4091},"En esta cuarta parte de la serie sobre la creación de una interfaz de usuario para nuestro RPG, se profundiza en la implementación de características avanzadas y mejoras en la experiencia del usuario.","md",null,{"ediButton":42},{"title":309,"description":4106},"9bYw6ksKUjhhKyFhDunBFSSDpkRJgL1DKINptPIlv8E",[4113,4115],{"title":305,"path":306,"stem":307,"description":4114,"children":-1},"En esta tercera parte de la serie sobre la UI para nuestro RPG, continuamos desarrollando la interfaz gráfica utilizando Java Swing, añadiendo más componentes y funcionalidades para mejorar la experiencia del usuario.",{"title":313,"path":314,"stem":315,"description":4116,"children":-1},"En esta quinta entrega hablaremos de las caches y el uso de imágenes",1779479576195]