[{"data":1,"prerenderedAt":1619},["ShallowReactive",2],{"navigation_docs":3,"-archivos-ui-gradientes":412,"-archivos-ui-gradientes-surround":1614},[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":277,"body":414,"description":1608,"extension":1609,"links":1610,"meta":1611,"navigation":503,"path":278,"seo":1612,"stem":279,"__hash__":1613},"docs\u002F7.archivos-ui\u002F11.gradientes.md",{"type":415,"value":416,"toc":1598},"minimark",[417,422,431,445,451,457,834,837,842,850,1179,1182,1186,1191,1196,1576,1579,1583,1594],[418,419,421],"h2",{"id":420},"qué-es-un-gradiente","¿Qué es un gradiente?",[423,424,425,426,430],"p",{},"Un gradiente es una transición suave entre dos o más colores. En Swing, puedes usar la clase ",[427,428,429],"code",{},"GradientPaint"," para crear gradientes lineales, radiales o cónicos. Los gradientes pueden mejorar la apariencia de tus interfaces al agregar profundidad y estilo a los componentes.",[423,432,433,434,436,437,440,441,444],{},"Además de ",[427,435,429],{},", Swing también ofrece la clase ",[427,438,439],{},"LinearGradientPaint"," para crear gradientes lineales más complejos con múltiples colores y puntos de parada. Y para gradientes radiales, puedes usar la clase ",[427,442,443],{},"RadialGradientPaint",", que permite crear transiciones circulares de color.",[418,446,448,449],{"id":447},"cómo-usar-gradientpaint","Cómo usar ",[427,450,429],{},[423,452,453,454,456],{},"Para usar ",[427,455,429],{},", debes crear una instancia de esta clase y luego usarla para pintar un componente. Aquí tienes un ejemplo básico:",[458,459,464],"pre",{"className":460,"code":461,"language":462,"meta":463,"style":463},"language-java shiki shiki-themes github-dark","import javax.swing.*;\nimport java.awt.*;\n\npublic class GradientPanel extends JPanel {\n    @Override\n    protected void paintComponent(Graphics g) {\n        super.paintComponent(g);\n        Graphics2D g2d = (Graphics2D) g;\n        \n        \u002F\u002F Crear un gradiente de color\n        GradientPaint gradient = new GradientPaint(0, 0, Color.BLUE, getWidth(), getHeight(), Color.WHITE);\n        \n        \u002F\u002F Establecer el gradiente como el color de pintura\n        g2d.setPaint(gradient);\n        \n        \u002F\u002F Rellenar el fondo del panel con el gradiente\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n    }\n\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Gradiente en Swing\");\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(400, 300);\n        frame.add(new GradientPanel());\n        frame.setVisible(true);\n    }\n}\n","java","",[427,465,466,486,498,505,527,536,558,573,585,591,598,638,643,649,661,666,672,699,705,710,737,759,771,791,808,823,828],{"__ignoreMap":463},[467,468,471,475,479,483],"span",{"class":469,"line":470},"line",1,[467,472,474],{"class":473},"snl16","import",[467,476,478],{"class":477},"s95oV"," javax.swing.",[467,480,482],{"class":481},"sDLfK","*",[467,484,485],{"class":477},";\n",[467,487,489,491,494,496],{"class":469,"line":488},2,[467,490,474],{"class":473},[467,492,493],{"class":477}," java.awt.",[467,495,482],{"class":481},[467,497,485],{"class":477},[467,499,501],{"class":469,"line":500},3,[467,502,504],{"emptyLinePlaceholder":503},true,"\n",[467,506,508,511,514,518,521,524],{"class":469,"line":507},4,[467,509,510],{"class":473},"public",[467,512,513],{"class":473}," class",[467,515,517],{"class":516},"svObZ"," GradientPanel",[467,519,520],{"class":473}," extends",[467,522,523],{"class":516}," JPanel",[467,525,526],{"class":477}," {\n",[467,528,530,533],{"class":469,"line":529},5,[467,531,532],{"class":477},"    @",[467,534,535],{"class":473},"Override\n",[467,537,539,542,545,548,551,555],{"class":469,"line":538},6,[467,540,541],{"class":473},"    protected",[467,543,544],{"class":473}," void",[467,546,547],{"class":516}," paintComponent",[467,549,550],{"class":477},"(Graphics ",[467,552,554],{"class":553},"s9osk","g",[467,556,557],{"class":477},") {\n",[467,559,561,564,567,570],{"class":469,"line":560},7,[467,562,563],{"class":481},"        super",[467,565,566],{"class":477},".",[467,568,569],{"class":516},"paintComponent",[467,571,572],{"class":477},"(g);\n",[467,574,576,579,582],{"class":469,"line":575},8,[467,577,578],{"class":477},"        Graphics2D g2d ",[467,580,581],{"class":473},"=",[467,583,584],{"class":477}," (Graphics2D) g;\n",[467,586,588],{"class":469,"line":587},9,[467,589,590],{"class":477},"        \n",[467,592,594],{"class":469,"line":593},10,[467,595,597],{"class":596},"sAwPA","        \u002F\u002F Crear un gradiente de color\n",[467,599,601,604,606,609,612,615,618,621,623,626,629,632,635],{"class":469,"line":600},11,[467,602,603],{"class":477},"        GradientPaint gradient ",[467,605,581],{"class":473},[467,607,608],{"class":473}," new",[467,610,611],{"class":516}," GradientPaint",[467,613,614],{"class":477},"(",[467,616,617],{"class":481},"0",[467,619,620],{"class":477},", ",[467,622,617],{"class":481},[467,624,625],{"class":477},", Color.BLUE, ",[467,627,628],{"class":516},"getWidth",[467,630,631],{"class":477},"(), ",[467,633,634],{"class":516},"getHeight",[467,636,637],{"class":477},"(), Color.WHITE);\n",[467,639,641],{"class":469,"line":640},12,[467,642,590],{"class":477},[467,644,646],{"class":469,"line":645},13,[467,647,648],{"class":596},"        \u002F\u002F Establecer el gradiente como el color de pintura\n",[467,650,652,655,658],{"class":469,"line":651},14,[467,653,654],{"class":477},"        g2d.",[467,656,657],{"class":516},"setPaint",[467,659,660],{"class":477},"(gradient);\n",[467,662,664],{"class":469,"line":663},15,[467,665,590],{"class":477},[467,667,669],{"class":469,"line":668},16,[467,670,671],{"class":596},"        \u002F\u002F Rellenar el fondo del panel con el gradiente\n",[467,673,675,677,680,682,684,686,688,690,692,694,696],{"class":469,"line":674},17,[467,676,654],{"class":477},[467,678,679],{"class":516},"fillRect",[467,681,614],{"class":477},[467,683,617],{"class":481},[467,685,620],{"class":477},[467,687,617],{"class":481},[467,689,620],{"class":477},[467,691,628],{"class":516},[467,693,631],{"class":477},[467,695,634],{"class":516},[467,697,698],{"class":477},"());\n",[467,700,702],{"class":469,"line":701},18,[467,703,704],{"class":477},"    }\n",[467,706,708],{"class":469,"line":707},19,[467,709,504],{"emptyLinePlaceholder":503},[467,711,713,716,719,721,724,726,729,732,735],{"class":469,"line":712},20,[467,714,715],{"class":473},"    public",[467,717,718],{"class":473}," static",[467,720,544],{"class":473},[467,722,723],{"class":516}," main",[467,725,614],{"class":477},[467,727,728],{"class":473},"String",[467,730,731],{"class":477},"[] ",[467,733,734],{"class":553},"args",[467,736,557],{"class":477},[467,738,740,743,745,747,750,752,756],{"class":469,"line":739},21,[467,741,742],{"class":477},"        JFrame frame ",[467,744,581],{"class":473},[467,746,608],{"class":473},[467,748,749],{"class":516}," JFrame",[467,751,614],{"class":477},[467,753,755],{"class":754},"sU2Wk","\"Gradiente en Swing\"",[467,757,758],{"class":477},");\n",[467,760,762,765,768],{"class":469,"line":761},22,[467,763,764],{"class":477},"        frame.",[467,766,767],{"class":516},"setDefaultCloseOperation",[467,769,770],{"class":477},"(JFrame.EXIT_ON_CLOSE);\n",[467,772,774,776,779,781,784,786,789],{"class":469,"line":773},23,[467,775,764],{"class":477},[467,777,778],{"class":516},"setSize",[467,780,614],{"class":477},[467,782,783],{"class":481},"400",[467,785,620],{"class":477},[467,787,788],{"class":481},"300",[467,790,758],{"class":477},[467,792,794,796,799,801,804,806],{"class":469,"line":793},24,[467,795,764],{"class":477},[467,797,798],{"class":516},"add",[467,800,614],{"class":477},[467,802,803],{"class":473},"new",[467,805,517],{"class":516},[467,807,698],{"class":477},[467,809,811,813,816,818,821],{"class":469,"line":810},25,[467,812,764],{"class":477},[467,814,815],{"class":516},"setVisible",[467,817,614],{"class":477},[467,819,820],{"class":481},"true",[467,822,758],{"class":477},[467,824,826],{"class":469,"line":825},26,[467,827,704],{"class":477},[467,829,831],{"class":469,"line":830},27,[467,832,833],{"class":477},"}\n",[423,835,836],{},"Como puedes notar, para usar esta clase necesitamos dos puntos: el punto de inicio y el punto de fin del gradiente, junto con los colores correspondientes. En este ejemplo, el gradiente va desde azul en la esquina superior izquierda hasta blanco en la esquina inferior derecha. Sin embargo, puedes ajustar estos parámetros para crear diferentes tipos de gradientes según tus necesidades.",[418,838,448,840],{"id":839},"cómo-usar-lineargradientpaint",[427,841,439],{},[423,843,453,844,846,847,849],{},[427,845,439],{},", puedes seguir un enfoque similar al de ",[427,848,429],{},", pero con más opciones para definir los colores y sus posiciones. Aquí tienes un ejemplo:",[458,851,853],{"className":460,"code":852,"language":462,"meta":463,"style":463},"import javax.swing.*;\nimport java.awt.*;\n\npublic class LinearGradientPanel extends JPanel {\n    @Override\n    protected void paintComponent(Graphics g) {\n        super.paintComponent(g);\n        Graphics2D g2d = (Graphics2D) g;\n        \n        \u002F\u002F Definir los colores y sus posiciones\n        float[] fractions = {0.0f, 0.5f, 1.0f};\n        Color[] colors = {Color.RED, Color.GREEN, Color.BLUE};\n        \n        \u002F\u002F Crear un gradiente lineal con múltiples colores\n        LinearGradientPaint linearGradient = new LinearGradientPaint(0, 0, getWidth(), getHeight(), fractions, colors);\n        \n        \u002F\u002F Establecer el gradiente como el color de pintura\n        g2d.setPaint(linearGradient);\n        \n        \u002F\u002F Rellenar el fondo del panel con el gradiente\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n    }\n\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Linear Gradient en Swing\");\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(400, 300);\n        frame.add(new LinearGradientPanel());\n        frame.setVisible(true);\n    }\n}\n",[427,854,855,865,875,879,894,900,914,924,932,936,941,970,983,987,992,1023,1027,1031,1040,1044,1048,1072,1076,1080,1100,1117,1125,1141,1156,1169,1174],{"__ignoreMap":463},[467,856,857,859,861,863],{"class":469,"line":470},[467,858,474],{"class":473},[467,860,478],{"class":477},[467,862,482],{"class":481},[467,864,485],{"class":477},[467,866,867,869,871,873],{"class":469,"line":488},[467,868,474],{"class":473},[467,870,493],{"class":477},[467,872,482],{"class":481},[467,874,485],{"class":477},[467,876,877],{"class":469,"line":500},[467,878,504],{"emptyLinePlaceholder":503},[467,880,881,883,885,888,890,892],{"class":469,"line":507},[467,882,510],{"class":473},[467,884,513],{"class":473},[467,886,887],{"class":516}," LinearGradientPanel",[467,889,520],{"class":473},[467,891,523],{"class":516},[467,893,526],{"class":477},[467,895,896,898],{"class":469,"line":529},[467,897,532],{"class":477},[467,899,535],{"class":473},[467,901,902,904,906,908,910,912],{"class":469,"line":538},[467,903,541],{"class":473},[467,905,544],{"class":473},[467,907,547],{"class":516},[467,909,550],{"class":477},[467,911,554],{"class":553},[467,913,557],{"class":477},[467,915,916,918,920,922],{"class":469,"line":560},[467,917,563],{"class":481},[467,919,566],{"class":477},[467,921,569],{"class":516},[467,923,572],{"class":477},[467,925,926,928,930],{"class":469,"line":575},[467,927,578],{"class":477},[467,929,581],{"class":473},[467,931,584],{"class":477},[467,933,934],{"class":469,"line":587},[467,935,590],{"class":477},[467,937,938],{"class":469,"line":593},[467,939,940],{"class":596},"        \u002F\u002F Definir los colores y sus posiciones\n",[467,942,943,946,949,951,954,957,959,962,964,967],{"class":469,"line":600},[467,944,945],{"class":473},"        float",[467,947,948],{"class":477},"[] fractions ",[467,950,581],{"class":473},[467,952,953],{"class":477}," {",[467,955,956],{"class":481},"0.0f",[467,958,620],{"class":477},[467,960,961],{"class":481},"0.5f",[467,963,620],{"class":477},[467,965,966],{"class":481},"1.0f",[467,968,969],{"class":477},"};\n",[467,971,972,975,978,980],{"class":469,"line":640},[467,973,974],{"class":473},"        Color",[467,976,977],{"class":477},"[] colors ",[467,979,581],{"class":473},[467,981,982],{"class":477}," {Color.RED, Color.GREEN, Color.BLUE};\n",[467,984,985],{"class":469,"line":645},[467,986,590],{"class":477},[467,988,989],{"class":469,"line":651},[467,990,991],{"class":596},"        \u002F\u002F Crear un gradiente lineal con múltiples colores\n",[467,993,994,997,999,1001,1004,1006,1008,1010,1012,1014,1016,1018,1020],{"class":469,"line":663},[467,995,996],{"class":477},"        LinearGradientPaint linearGradient ",[467,998,581],{"class":473},[467,1000,608],{"class":473},[467,1002,1003],{"class":516}," LinearGradientPaint",[467,1005,614],{"class":477},[467,1007,617],{"class":481},[467,1009,620],{"class":477},[467,1011,617],{"class":481},[467,1013,620],{"class":477},[467,1015,628],{"class":516},[467,1017,631],{"class":477},[467,1019,634],{"class":516},[467,1021,1022],{"class":477},"(), fractions, colors);\n",[467,1024,1025],{"class":469,"line":668},[467,1026,590],{"class":477},[467,1028,1029],{"class":469,"line":674},[467,1030,648],{"class":596},[467,1032,1033,1035,1037],{"class":469,"line":701},[467,1034,654],{"class":477},[467,1036,657],{"class":516},[467,1038,1039],{"class":477},"(linearGradient);\n",[467,1041,1042],{"class":469,"line":707},[467,1043,590],{"class":477},[467,1045,1046],{"class":469,"line":712},[467,1047,671],{"class":596},[467,1049,1050,1052,1054,1056,1058,1060,1062,1064,1066,1068,1070],{"class":469,"line":739},[467,1051,654],{"class":477},[467,1053,679],{"class":516},[467,1055,614],{"class":477},[467,1057,617],{"class":481},[467,1059,620],{"class":477},[467,1061,617],{"class":481},[467,1063,620],{"class":477},[467,1065,628],{"class":516},[467,1067,631],{"class":477},[467,1069,634],{"class":516},[467,1071,698],{"class":477},[467,1073,1074],{"class":469,"line":761},[467,1075,704],{"class":477},[467,1077,1078],{"class":469,"line":773},[467,1079,504],{"emptyLinePlaceholder":503},[467,1081,1082,1084,1086,1088,1090,1092,1094,1096,1098],{"class":469,"line":793},[467,1083,715],{"class":473},[467,1085,718],{"class":473},[467,1087,544],{"class":473},[467,1089,723],{"class":516},[467,1091,614],{"class":477},[467,1093,728],{"class":473},[467,1095,731],{"class":477},[467,1097,734],{"class":553},[467,1099,557],{"class":477},[467,1101,1102,1104,1106,1108,1110,1112,1115],{"class":469,"line":810},[467,1103,742],{"class":477},[467,1105,581],{"class":473},[467,1107,608],{"class":473},[467,1109,749],{"class":516},[467,1111,614],{"class":477},[467,1113,1114],{"class":754},"\"Linear Gradient en Swing\"",[467,1116,758],{"class":477},[467,1118,1119,1121,1123],{"class":469,"line":825},[467,1120,764],{"class":477},[467,1122,767],{"class":516},[467,1124,770],{"class":477},[467,1126,1127,1129,1131,1133,1135,1137,1139],{"class":469,"line":830},[467,1128,764],{"class":477},[467,1130,778],{"class":516},[467,1132,614],{"class":477},[467,1134,783],{"class":481},[467,1136,620],{"class":477},[467,1138,788],{"class":481},[467,1140,758],{"class":477},[467,1142,1144,1146,1148,1150,1152,1154],{"class":469,"line":1143},28,[467,1145,764],{"class":477},[467,1147,798],{"class":516},[467,1149,614],{"class":477},[467,1151,803],{"class":473},[467,1153,887],{"class":516},[467,1155,698],{"class":477},[467,1157,1159,1161,1163,1165,1167],{"class":469,"line":1158},29,[467,1160,764],{"class":477},[467,1162,815],{"class":516},[467,1164,614],{"class":477},[467,1166,820],{"class":481},[467,1168,758],{"class":477},[467,1170,1172],{"class":469,"line":1171},30,[467,1173,704],{"class":477},[467,1175,1177],{"class":469,"line":1176},31,[467,1178,833],{"class":477},[423,1180,1181],{},"En este ejemplo, el gradiente lineal se define con tres colores: rojo, verde y azul, que se distribuyen a lo largo del panel. Y al igual que la clase anterior, necesitamos especificar los puntos de inicio y fin del gradiente, así como las posiciones de los colores para lograr el efecto deseado, junto a los colores que queremos usar en el gradiente. Esto te permite crear gradientes más complejos y personalizados para tus interfaces.",[1183,1184,1185],"warning",{},"Para este tipo de gradientes, debemos tener en cuenta que el número de colores y sus posiciones deben coincidir, es decir, si defines tres colores, debes proporcionar tres posiciones correspondientes. Además, las posiciones deben estar en el rango de 0.0 a 1.0, donde 0.0 representa el inicio del gradiente y 1.0 representa el final.",[418,1187,448,1189],{"id":1188},"cómo-usar-radialgradientpaint",[427,1190,443],{},[423,1192,453,1193,1195],{},[427,1194,443],{},", puedes crear un gradiente radial que se expande desde un punto central hacia afuera. Aquí tienes un ejemplo:",[458,1197,1199],{"className":460,"code":1198,"language":462,"meta":463,"style":463},"import javax.swing.*;\nimport java.awt.*;\n\npublic class RadialGradientPanel extends JPanel {\n    @Override\n    protected void paintComponent(Graphics g) {\n        super.paintComponent(g);\n        Graphics2D g2d = (Graphics2D) g;\n        \n        \u002F\u002F Definir el centro del gradiente y su radio\n        Point2D center = new Point2D.Float(getWidth() \u002F 2, getHeight() \u002F 2);\n        float radius = Math.min(getWidth(), getHeight()) \u002F 2;\n        \n        \u002F\u002F Definir los colores y sus posiciones\n        float[] fractions = {0.0f, 1.0f};\n        Color[] colors = {Color.YELLOW, Color.ORANGE};\n        \n        \u002F\u002F Crear un gradiente radial\n        RadialGradientPaint radialGradient = new RadialGradientPaint(center, radius, fractions, colors);\n        \n        \u002F\u002F Establecer el gradiente como el color de pintura\n        g2d.setPaint(radialGradient);\n        \n        \u002F\u002F Rellenar el fondo del panel con el gradiente\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n    }\n\n    public static void main(String[] args) {\n        JFrame frame = new JFrame(\"Radial Gradient en Swing\");\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(400, 300);\n        frame.add(new RadialGradientPanel());\n        frame.setVisible(true);\n    }\n}\n",[427,1200,1201,1211,1221,1225,1240,1246,1260,1270,1278,1282,1287,1327,1359,1363,1367,1385,1396,1400,1405,1420,1424,1428,1437,1441,1445,1469,1473,1477,1497,1514,1522,1538,1553,1566,1571],{"__ignoreMap":463},[467,1202,1203,1205,1207,1209],{"class":469,"line":470},[467,1204,474],{"class":473},[467,1206,478],{"class":477},[467,1208,482],{"class":481},[467,1210,485],{"class":477},[467,1212,1213,1215,1217,1219],{"class":469,"line":488},[467,1214,474],{"class":473},[467,1216,493],{"class":477},[467,1218,482],{"class":481},[467,1220,485],{"class":477},[467,1222,1223],{"class":469,"line":500},[467,1224,504],{"emptyLinePlaceholder":503},[467,1226,1227,1229,1231,1234,1236,1238],{"class":469,"line":507},[467,1228,510],{"class":473},[467,1230,513],{"class":473},[467,1232,1233],{"class":516}," RadialGradientPanel",[467,1235,520],{"class":473},[467,1237,523],{"class":516},[467,1239,526],{"class":477},[467,1241,1242,1244],{"class":469,"line":529},[467,1243,532],{"class":477},[467,1245,535],{"class":473},[467,1247,1248,1250,1252,1254,1256,1258],{"class":469,"line":538},[467,1249,541],{"class":473},[467,1251,544],{"class":473},[467,1253,547],{"class":516},[467,1255,550],{"class":477},[467,1257,554],{"class":553},[467,1259,557],{"class":477},[467,1261,1262,1264,1266,1268],{"class":469,"line":560},[467,1263,563],{"class":481},[467,1265,566],{"class":477},[467,1267,569],{"class":516},[467,1269,572],{"class":477},[467,1271,1272,1274,1276],{"class":469,"line":575},[467,1273,578],{"class":477},[467,1275,581],{"class":473},[467,1277,584],{"class":477},[467,1279,1280],{"class":469,"line":587},[467,1281,590],{"class":477},[467,1283,1284],{"class":469,"line":593},[467,1285,1286],{"class":596},"        \u002F\u002F Definir el centro del gradiente y su radio\n",[467,1288,1289,1292,1294,1296,1299,1302,1304,1306,1309,1312,1315,1317,1319,1321,1323,1325],{"class":469,"line":600},[467,1290,1291],{"class":477},"        Point2D center ",[467,1293,581],{"class":473},[467,1295,608],{"class":473},[467,1297,1298],{"class":477}," Point2D.",[467,1300,1301],{"class":516},"Float",[467,1303,614],{"class":477},[467,1305,628],{"class":516},[467,1307,1308],{"class":477},"() ",[467,1310,1311],{"class":473},"\u002F",[467,1313,1314],{"class":481}," 2",[467,1316,620],{"class":477},[467,1318,634],{"class":516},[467,1320,1308],{"class":477},[467,1322,1311],{"class":473},[467,1324,1314],{"class":481},[467,1326,758],{"class":477},[467,1328,1329,1331,1334,1336,1339,1342,1344,1346,1348,1350,1353,1355,1357],{"class":469,"line":640},[467,1330,945],{"class":473},[467,1332,1333],{"class":477}," radius ",[467,1335,581],{"class":473},[467,1337,1338],{"class":477}," Math.",[467,1340,1341],{"class":516},"min",[467,1343,614],{"class":477},[467,1345,628],{"class":516},[467,1347,631],{"class":477},[467,1349,634],{"class":516},[467,1351,1352],{"class":477},"()) ",[467,1354,1311],{"class":473},[467,1356,1314],{"class":481},[467,1358,485],{"class":477},[467,1360,1361],{"class":469,"line":645},[467,1362,590],{"class":477},[467,1364,1365],{"class":469,"line":651},[467,1366,940],{"class":596},[467,1368,1369,1371,1373,1375,1377,1379,1381,1383],{"class":469,"line":663},[467,1370,945],{"class":473},[467,1372,948],{"class":477},[467,1374,581],{"class":473},[467,1376,953],{"class":477},[467,1378,956],{"class":481},[467,1380,620],{"class":477},[467,1382,966],{"class":481},[467,1384,969],{"class":477},[467,1386,1387,1389,1391,1393],{"class":469,"line":668},[467,1388,974],{"class":473},[467,1390,977],{"class":477},[467,1392,581],{"class":473},[467,1394,1395],{"class":477}," {Color.YELLOW, Color.ORANGE};\n",[467,1397,1398],{"class":469,"line":674},[467,1399,590],{"class":477},[467,1401,1402],{"class":469,"line":701},[467,1403,1404],{"class":596},"        \u002F\u002F Crear un gradiente radial\n",[467,1406,1407,1410,1412,1414,1417],{"class":469,"line":707},[467,1408,1409],{"class":477},"        RadialGradientPaint radialGradient ",[467,1411,581],{"class":473},[467,1413,608],{"class":473},[467,1415,1416],{"class":516}," RadialGradientPaint",[467,1418,1419],{"class":477},"(center, radius, fractions, colors);\n",[467,1421,1422],{"class":469,"line":712},[467,1423,590],{"class":477},[467,1425,1426],{"class":469,"line":739},[467,1427,648],{"class":596},[467,1429,1430,1432,1434],{"class":469,"line":761},[467,1431,654],{"class":477},[467,1433,657],{"class":516},[467,1435,1436],{"class":477},"(radialGradient);\n",[467,1438,1439],{"class":469,"line":773},[467,1440,590],{"class":477},[467,1442,1443],{"class":469,"line":793},[467,1444,671],{"class":596},[467,1446,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467],{"class":469,"line":810},[467,1448,654],{"class":477},[467,1450,679],{"class":516},[467,1452,614],{"class":477},[467,1454,617],{"class":481},[467,1456,620],{"class":477},[467,1458,617],{"class":481},[467,1460,620],{"class":477},[467,1462,628],{"class":516},[467,1464,631],{"class":477},[467,1466,634],{"class":516},[467,1468,698],{"class":477},[467,1470,1471],{"class":469,"line":825},[467,1472,704],{"class":477},[467,1474,1475],{"class":469,"line":830},[467,1476,504],{"emptyLinePlaceholder":503},[467,1478,1479,1481,1483,1485,1487,1489,1491,1493,1495],{"class":469,"line":1143},[467,1480,715],{"class":473},[467,1482,718],{"class":473},[467,1484,544],{"class":473},[467,1486,723],{"class":516},[467,1488,614],{"class":477},[467,1490,728],{"class":473},[467,1492,731],{"class":477},[467,1494,734],{"class":553},[467,1496,557],{"class":477},[467,1498,1499,1501,1503,1505,1507,1509,1512],{"class":469,"line":1158},[467,1500,742],{"class":477},[467,1502,581],{"class":473},[467,1504,608],{"class":473},[467,1506,749],{"class":516},[467,1508,614],{"class":477},[467,1510,1511],{"class":754},"\"Radial Gradient en Swing\"",[467,1513,758],{"class":477},[467,1515,1516,1518,1520],{"class":469,"line":1171},[467,1517,764],{"class":477},[467,1519,767],{"class":516},[467,1521,770],{"class":477},[467,1523,1524,1526,1528,1530,1532,1534,1536],{"class":469,"line":1176},[467,1525,764],{"class":477},[467,1527,778],{"class":516},[467,1529,614],{"class":477},[467,1531,783],{"class":481},[467,1533,620],{"class":477},[467,1535,788],{"class":481},[467,1537,758],{"class":477},[467,1539,1541,1543,1545,1547,1549,1551],{"class":469,"line":1540},32,[467,1542,764],{"class":477},[467,1544,798],{"class":516},[467,1546,614],{"class":477},[467,1548,803],{"class":473},[467,1550,1233],{"class":516},[467,1552,698],{"class":477},[467,1554,1556,1558,1560,1562,1564],{"class":469,"line":1555},33,[467,1557,764],{"class":477},[467,1559,815],{"class":516},[467,1561,614],{"class":477},[467,1563,820],{"class":481},[467,1565,758],{"class":477},[467,1567,1569],{"class":469,"line":1568},34,[467,1570,704],{"class":477},[467,1572,1574],{"class":469,"line":1573},35,[467,1575,833],{"class":477},[423,1577,1578],{},"En este ejemplo, el gradiente radial se define con un centro en el medio del panel y un radio que se extiende hasta los bordes. Los colores amarillo y naranja se distribuyen desde el centro hacia afuera, creando un efecto de gradiente radial. Al igual que con los otros tipos de gradientes, puedes ajustar los colores, las posiciones y el radio para lograr el efecto deseado en tu interfaz.",[418,1580,1582],{"id":1581},"conclusión","Conclusión",[423,1584,1585,1586,620,1588,1590,1591,1593],{},"Los gradientes son una herramienta poderosa para mejorar la apariencia de tus interfaces en Swing. Al usar ",[427,1587,429],{},[427,1589,439],{}," o ",[427,1592,443],{},", puedes crear transiciones suaves entre colores que añaden profundidad y estilo a tus componentes. Experimenta con diferentes colores, posiciones y tipos de gradientes para encontrar el diseño que mejor se adapte a tu aplicación. Recuerda que el uso de gradientes puede afectar el rendimiento de tu aplicación, especialmente si se usan en componentes que se actualizan con frecuencia, así que úsalos con moderación para mantener una buena experiencia de usuario.",[1595,1596,1597],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":463,"searchDepth":488,"depth":488,"links":1599},[1600,1601,1603,1605,1607],{"id":420,"depth":488,"text":421},{"id":447,"depth":488,"text":1602},"Cómo usar GradientPaint",{"id":839,"depth":488,"text":1604},"Cómo usar LinearGradientPaint",{"id":1188,"depth":488,"text":1606},"Cómo usar RadialGradientPaint",{"id":1581,"depth":488,"text":1582},"Cómo usar gradientes en Swing para mejorar la apariencia de tus interfaces.","md",null,{"editButton":42},{"title":277,"description":1608},"H0AUXbl1zJ-EU03DjuCT4VuKQzcRBX4EDNQJCZmaqps",[1615,1617],{"title":273,"path":274,"stem":275,"description":1616,"children":-1},"En este apartado aprenderemos a personalizar componentes en Swing mediante la extensión de clases, lo que nos permitirá crear componentes personalizados con funcionalidades y apariencias únicas.",{"title":281,"path":282,"stem":283,"description":1618,"children":-1},"Cómo crear y personalizar botones en Swing para mejorar la interacción de tus interfaces.",1779479575062]