[{"data":1,"prerenderedAt":1043},["ShallowReactive",2],{"navigation_docs":3,"-archivos-ui-draw":412,"-archivos-ui-draw-surround":1038},[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":265,"body":414,"description":1032,"extension":1033,"links":1034,"meta":1035,"navigation":490,"path":266,"seo":1036,"stem":267,"__hash__":1037},"docs\u002F7.archivos-ui\u002F08.draw.md",{"type":415,"value":416,"toc":1025},"minimark",[417,422,435,439,448,608,629,633,646,895,903,907,913,983,995,1008,1012,1021],[418,419,421],"h2",{"id":420},"qué-es-el-método-drawcomponent","¿Qué es el método drawComponent()?",[423,424,425,426,430,431,434],"p",{},"El método ",[427,428,429],"code",{},"drawComponent()"," es un método que se encuentra en la clase ",[427,432,433],{},"JComponent"," de Swing, y es el encargado de dibujar el componente en la pantalla. Al sobrescribir este método, podemos personalizar completamente la apariencia del componente, lo que nos permite crear interfaces gráficas únicas y adaptadas a nuestras necesidades específicas.",[418,436,438],{"id":437},"sobrescribiendo-el-método-drawcomponent","Sobrescribiendo el método drawComponent()",[423,440,441,442,444,445,447],{},"Para sobrescribir el método ",[427,443,429],{},", debemos crear una clase que extienda de ",[427,446,433],{}," y luego implementar el método. Aquí hay un ejemplo básico de cómo hacerlo:",[449,450,455],"pre",{"className":451,"code":452,"language":453,"meta":454,"style":454},"language-java shiki shiki-themes github-dark","import javax.swing.*;\nimport java.awt.Graphics;\n\npublic class CustomComponent extends JComponent {\n    @Override\n    protected void paintComponent(Graphics g) {\n        super.paintComponent(g);\n        \u002F\u002F Aquí puedes agregar tu código de dibujo personalizado\n        g.drawString(\"¡Hola, soy un componente personalizado!\", 20, 20);\n    }\n}\n","java","",[427,456,457,477,485,492,514,523,545,560,567,596,602],{"__ignoreMap":454},[458,459,462,466,470,474],"span",{"class":460,"line":461},"line",1,[458,463,465],{"class":464},"snl16","import",[458,467,469],{"class":468},"s95oV"," javax.swing.",[458,471,473],{"class":472},"sDLfK","*",[458,475,476],{"class":468},";\n",[458,478,480,482],{"class":460,"line":479},2,[458,481,465],{"class":464},[458,483,484],{"class":468}," java.awt.Graphics;\n",[458,486,488],{"class":460,"line":487},3,[458,489,491],{"emptyLinePlaceholder":490},true,"\n",[458,493,495,498,501,505,508,511],{"class":460,"line":494},4,[458,496,497],{"class":464},"public",[458,499,500],{"class":464}," class",[458,502,504],{"class":503},"svObZ"," CustomComponent",[458,506,507],{"class":464}," extends",[458,509,510],{"class":503}," JComponent",[458,512,513],{"class":468}," {\n",[458,515,517,520],{"class":460,"line":516},5,[458,518,519],{"class":468},"    @",[458,521,522],{"class":464},"Override\n",[458,524,526,529,532,535,538,542],{"class":460,"line":525},6,[458,527,528],{"class":464},"    protected",[458,530,531],{"class":464}," void",[458,533,534],{"class":503}," paintComponent",[458,536,537],{"class":468},"(Graphics ",[458,539,541],{"class":540},"s9osk","g",[458,543,544],{"class":468},") {\n",[458,546,548,551,554,557],{"class":460,"line":547},7,[458,549,550],{"class":472},"        super",[458,552,553],{"class":468},".",[458,555,556],{"class":503},"paintComponent",[458,558,559],{"class":468},"(g);\n",[458,561,563],{"class":460,"line":562},8,[458,564,566],{"class":565},"sAwPA","        \u002F\u002F Aquí puedes agregar tu código de dibujo personalizado\n",[458,568,570,573,576,579,583,586,589,591,593],{"class":460,"line":569},9,[458,571,572],{"class":468},"        g.",[458,574,575],{"class":503},"drawString",[458,577,578],{"class":468},"(",[458,580,582],{"class":581},"sU2Wk","\"¡Hola, soy un componente personalizado!\"",[458,584,585],{"class":468},", ",[458,587,588],{"class":472},"20",[458,590,585],{"class":468},[458,592,588],{"class":472},[458,594,595],{"class":468},");\n",[458,597,599],{"class":460,"line":598},10,[458,600,601],{"class":468},"    }\n",[458,603,605],{"class":460,"line":604},11,[458,606,607],{"class":468},"}\n",[423,609,610,611,614,615,617,618,621,622,625,626,628],{},"En este ejemplo, hemos creado una clase ",[427,612,613],{},"CustomComponent"," que extiende de ",[427,616,433],{}," y sobrescribe el método ",[427,619,620],{},"paintComponent()",", que es el método que se llama para dibujar el componente. Dentro de este método, puedes agregar cualquier código de dibujo personalizado utilizando el objeto ",[427,623,624],{},"Graphics"," proporcionado. En este caso, simplemente dibujamos una cadena de texto en la pantalla, pero puedes utilizar cualquier método de dibujo disponible en la clase ",[427,627,624],{}," para crear formas, imágenes, colores personalizados, etc.",[418,630,632],{"id":631},"grafics2d-para-un-control-más-avanzado","Grafics2D para un control más avanzado",[423,634,635,636,638,639,642,643,645],{},"Si deseas tener un control aún más avanzado sobre el dibujo, puedes convertir el objeto ",[427,637,624],{}," a ",[427,640,641],{},"Graphics2D",", que es una subclase de ",[427,644,624],{}," que proporciona métodos adicionales para dibujar formas más complejas y aplicar transformaciones. Aquí tienes un ejemplo de cómo hacerlo:",[449,647,649],{"className":451,"code":648,"language":453,"meta":454,"style":454},"import javax.swing.*;\nimport java.awt.Graphics;\nimport java.awt.Graphics2D;\nimport java.awt.Color;\n\npublic class CustomComponent extends JComponent {\n    @Override\n    protected void paintComponent(Graphics g) {\n        super.paintComponent(g);\n        Graphics2D g2d = (Graphics2D) g;\n        \n        \u002F\u002F Establecer un color de fondo personalizado\n        g2d.setColor(Color.LIGHT_GRAY);\n        g2d.fillRect(0, 0, getWidth(), getHeight());\n        \n        \u002F\u002F Dibujar un círculo rojo\n        g2d.setColor(Color.RED);\n        g2d.fillOval(50, 50, 100, 100);\n        \n        \u002F\u002F Dibujar una cadena de texto\n        g2d.setColor(Color.BLACK);\n        g2d.drawString(\"¡Hola, soy un componente personalizado!\", 20, 20);\n    }\n}\n",[427,650,651,661,667,674,681,685,699,705,719,729,740,745,751,763,794,799,805,815,843,848,854,864,885,890],{"__ignoreMap":454},[458,652,653,655,657,659],{"class":460,"line":461},[458,654,465],{"class":464},[458,656,469],{"class":468},[458,658,473],{"class":472},[458,660,476],{"class":468},[458,662,663,665],{"class":460,"line":479},[458,664,465],{"class":464},[458,666,484],{"class":468},[458,668,669,671],{"class":460,"line":487},[458,670,465],{"class":464},[458,672,673],{"class":468}," java.awt.Graphics2D;\n",[458,675,676,678],{"class":460,"line":494},[458,677,465],{"class":464},[458,679,680],{"class":468}," java.awt.Color;\n",[458,682,683],{"class":460,"line":516},[458,684,491],{"emptyLinePlaceholder":490},[458,686,687,689,691,693,695,697],{"class":460,"line":525},[458,688,497],{"class":464},[458,690,500],{"class":464},[458,692,504],{"class":503},[458,694,507],{"class":464},[458,696,510],{"class":503},[458,698,513],{"class":468},[458,700,701,703],{"class":460,"line":547},[458,702,519],{"class":468},[458,704,522],{"class":464},[458,706,707,709,711,713,715,717],{"class":460,"line":562},[458,708,528],{"class":464},[458,710,531],{"class":464},[458,712,534],{"class":503},[458,714,537],{"class":468},[458,716,541],{"class":540},[458,718,544],{"class":468},[458,720,721,723,725,727],{"class":460,"line":569},[458,722,550],{"class":472},[458,724,553],{"class":468},[458,726,556],{"class":503},[458,728,559],{"class":468},[458,730,731,734,737],{"class":460,"line":598},[458,732,733],{"class":468},"        Graphics2D g2d ",[458,735,736],{"class":464},"=",[458,738,739],{"class":468}," (Graphics2D) g;\n",[458,741,742],{"class":460,"line":604},[458,743,744],{"class":468},"        \n",[458,746,748],{"class":460,"line":747},12,[458,749,750],{"class":565},"        \u002F\u002F Establecer un color de fondo personalizado\n",[458,752,754,757,760],{"class":460,"line":753},13,[458,755,756],{"class":468},"        g2d.",[458,758,759],{"class":503},"setColor",[458,761,762],{"class":468},"(Color.LIGHT_GRAY);\n",[458,764,766,768,771,773,776,778,780,782,785,788,791],{"class":460,"line":765},14,[458,767,756],{"class":468},[458,769,770],{"class":503},"fillRect",[458,772,578],{"class":468},[458,774,775],{"class":472},"0",[458,777,585],{"class":468},[458,779,775],{"class":472},[458,781,585],{"class":468},[458,783,784],{"class":503},"getWidth",[458,786,787],{"class":468},"(), ",[458,789,790],{"class":503},"getHeight",[458,792,793],{"class":468},"());\n",[458,795,797],{"class":460,"line":796},15,[458,798,744],{"class":468},[458,800,802],{"class":460,"line":801},16,[458,803,804],{"class":565},"        \u002F\u002F Dibujar un círculo rojo\n",[458,806,808,810,812],{"class":460,"line":807},17,[458,809,756],{"class":468},[458,811,759],{"class":503},[458,813,814],{"class":468},"(Color.RED);\n",[458,816,818,820,823,825,828,830,832,834,837,839,841],{"class":460,"line":817},18,[458,819,756],{"class":468},[458,821,822],{"class":503},"fillOval",[458,824,578],{"class":468},[458,826,827],{"class":472},"50",[458,829,585],{"class":468},[458,831,827],{"class":472},[458,833,585],{"class":468},[458,835,836],{"class":472},"100",[458,838,585],{"class":468},[458,840,836],{"class":472},[458,842,595],{"class":468},[458,844,846],{"class":460,"line":845},19,[458,847,744],{"class":468},[458,849,851],{"class":460,"line":850},20,[458,852,853],{"class":565},"        \u002F\u002F Dibujar una cadena de texto\n",[458,855,857,859,861],{"class":460,"line":856},21,[458,858,756],{"class":468},[458,860,759],{"class":503},[458,862,863],{"class":468},"(Color.BLACK);\n",[458,865,867,869,871,873,875,877,879,881,883],{"class":460,"line":866},22,[458,868,756],{"class":468},[458,870,575],{"class":503},[458,872,578],{"class":468},[458,874,582],{"class":581},[458,876,585],{"class":468},[458,878,588],{"class":472},[458,880,585],{"class":468},[458,882,588],{"class":472},[458,884,595],{"class":468},[458,886,888],{"class":460,"line":887},23,[458,889,601],{"class":468},[458,891,893],{"class":460,"line":892},24,[458,894,607],{"class":468},[423,896,897,898,638,900,902],{},"En este ejemplo, hemos convertido el objeto ",[427,899,624],{},[427,901,641],{}," para poder utilizar métodos adicionales. Hemos establecido un color de fondo personalizado, dibujado un círculo rojo y luego dibujado una cadena de texto en la pantalla.",[418,904,906],{"id":905},"funciones-de-graphics2d","Funciones de Graphics2D",[423,908,909,910,912],{},"Algunas de las funciones más comunes de ",[427,911,641],{}," incluyen:",[914,915,916,923,929,935,941,947,953,959,965,971,977],"ul",{},[917,918,919,922],"li",{},[427,920,921],{},"setColor(Color color)",": Establece el color de dibujo.",[917,924,925,928],{},[427,926,927],{},"fillRect(int x, int y, int width, int height)",": Dibuja un rectángulo relleno.",[917,930,931,934],{},[427,932,933],{},"fillOval(int x, int y, int width, int height)",": Dibuja un óvalo relleno.",[917,936,937,940],{},[427,938,939],{},"drawString(String string, int x, int y)",": Dibuja una cadena de texto.",[917,942,943,946],{},[427,944,945],{},"setFont(Font font)",": Establece la fuente de texto.",[917,948,949,952],{},[427,950,951],{},"rotate(double theta)",": Aplica una rotación al contexto de dibujo.",[917,954,955,958],{},[427,956,957],{},"translate(int x, int y)",": Aplica una traslación al contexto de dibujo.",[917,960,961,964],{},[427,962,963],{},"scale(double sx, double sy)",": Aplica una escala al contexto de dibujo.",[917,966,967,970],{},[427,968,969],{},"fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)",": Dibuja un rectángulo redondeado relleno.",[917,972,973,976],{},[427,974,975],{},"drawLine(int x1, int y1, int x2, int y2)",": Dibuja una línea entre dos puntos.",[917,978,979,982],{},[427,980,981],{},"setStroke(Stroke stroke)",": Establece el estilo de línea para el dibujo.",[423,984,985,986,988,989,991,992,994],{},"Existen muchas más funciones disponibles en ",[427,987,641],{}," que te permiten crear gráficos complejos y personalizados. Al sobrescribir el método ",[427,990,620],{}," y utilizar ",[427,993,641],{},", puedes tener un control total sobre cómo se dibujan los componentes en la pantalla, lo que te permite crear interfaces gráficas únicas y adaptadas a tus necesidades específicas.",[423,996,997,998,1000,1001,553],{},"Para conocer más sobre las funciones de ",[427,999,641],{},", puedes consultar la documentación oficial de Java en el siguiente enlace: ",[1002,1003,1007],"a",{"href":1004,"rel":1005},"https:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002F8\u002Fdocs\u002Fapi\u002Fjava\u002Fawt\u002FGraphics2D.html",[1006],"nofollow","Graphics2D Documentation",[418,1009,1011],{"id":1010},"conclusión","Conclusión",[423,1013,1014,1015,1017,1018,1020],{},"En este apartado hemos aprendido sobre el método ",[427,1016,429],{}," y cómo sobrescribirlo para personalizar la apariencia de los componentes en Swing. Al sobrescribir este método, podemos tener un control total sobre cómo se dibujan los componentes en la pantalla, lo que nos permite crear interfaces gráficas únicas y adaptadas a nuestras necesidades específicas. Además, al utilizar ",[427,1019,641],{},", podemos acceder a una amplia gama de funciones para crear gráficos complejos y personalizados. En los siguientes apartados, exploraremos más técnicas y componentes para seguir mejorando nuestras interfaces gráficas en Java con Swing.",[1022,1023,1024],"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":454,"searchDepth":479,"depth":479,"links":1026},[1027,1028,1029,1030,1031],{"id":420,"depth":479,"text":421},{"id":437,"depth":479,"text":438},{"id":631,"depth":479,"text":632},{"id":905,"depth":479,"text":906},{"id":1010,"depth":479,"text":1011},"En este apartado aprenderemos a sobrescribir el método drawComponent() para personalizar la apariencia de los componentes en Swing, lo que nos permitirá tener un control total sobre cómo se dibujan los componentes en la pantalla.","md",null,{"editButton":42},{"title":265,"description":1032},"KdwqoPS8Jw2OeGA3WQZ5lLsf_gRKnbO7TWeM4T65jWY",[1039,1041],{"title":261,"path":262,"stem":263,"description":1040,"children":-1},"En este apartado aprenderemos a personalizar la apariencia de los componentes en Swing utilizando las clases Color y Font, así como otros métodos de personalización.",{"title":269,"path":270,"stem":271,"description":1042,"children":-1},"En este apartado aprenderemos a manejar eventos en Swing, lo que nos permitirá responder a las acciones del usuario, como clics de botones, movimientos del mouse, teclas presionadas, entre otros.",1779479574688]