[{"data":1,"prerenderedAt":982},["ShallowReactive",2],{"navigation_docs":3,"-archivos-ui-eventos":412,"-archivos-ui-eventos-surround":977},[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":269,"body":414,"description":971,"extension":972,"links":973,"meta":974,"navigation":538,"path":270,"seo":975,"stem":271,"__hash__":976},"docs\u002F7.archivos-ui\u002F09.eventos.md",{"type":415,"value":416,"toc":964},"minimark",[417,422,426,429,441,478,482,488,811,834,838,943,953,957,960],[418,419,421],"h2",{"id":420},"qué-son-los-eventos-en-swing","¿Qué son los eventos en Swing?",[423,424,425],"p",{},"En Swing, los eventos son acciones o sucesos que ocurren en la interfaz gráfica de usuario (GUI) y que pueden ser detectados y manejados por la aplicación. Estos eventos pueden ser generados por el usuario, como hacer clic en un botón, mover el mouse, presionar una tecla, entre otros, o pueden ser generados por el sistema, como cambios en el estado de un componente o eventos de temporizador.",[418,427,269],{"id":428},"manejando-eventos-en-swing",[423,430,431,432,436,437,440],{},"Para manejar eventos en Swing, hacemos uso de un ",[433,434,435],"strong",{},"Patrón de Diseño"," conocido como ",[433,438,439],{},"Listener"," (Escuchador). Un Listener es una interfaz que define métodos que se ejecutan cuando ocurre un evento específico. Para manejar eventos, debemos seguir estos pasos:",[442,443,444,451,462,472],"ol",{},[445,446,447,450],"li",{},[433,448,449],{},"Identificar el evento que queremos manejar",": Primero, debemos identificar qué tipo de evento queremos manejar, como un clic de botón, un movimiento del mouse, una tecla presionada, etc.",[445,452,453,456,457,461],{},[433,454,455],{},"Implementar el Listener correspondiente",": Luego, debemos implementar la interfaz del Listener correspondiente al evento que queremos manejar. Por ejemplo, para manejar un clic de botón, implementamos la interfaz ",[458,459,460],"code",{},"ActionListener",".",[445,463,464,467,468,471],{},[433,465,466],{},"Registrar el Listener en el componente",": Finalmente, debemos registrar el Listener en el componente que genera el evento. Esto se hace utilizando métodos específicos del componente, como ",[458,469,470],{},"addActionListener()"," para botones.",[445,473,474,477],{},[433,475,476],{},"Definir el comportamiento en el método del Listener",": Dentro del método del Listener, definimos el comportamiento que queremos que ocurra cuando se genere el evento.",[418,479,481],{"id":480},"ejemplo-de-manejo-de-eventos","Ejemplo de manejo de eventos",[423,483,484,485,487],{},"A continuación, se muestra un ejemplo básico de cómo manejar un evento de clic en un botón utilizando ",[458,486,460],{},":",[489,490,495],"pre",{"className":491,"code":492,"language":493,"meta":494,"style":494},"language-java shiki shiki-themes github-dark","import javax.swing.*;\nimport java.awt.event.ActionEvent;\nimport java.awt.event.ActionListener;\n\npublic class EventExample {\n    void main() {\n        JFrame frame = new JFrame(\"Ejemplo de Eventos\");\n        JButton button = new JButton(\"Haz clic aquí\");\n\n        \u002F\u002F Implementar el ActionListener\n        \u002F\u002F Aquí estamos utilizando una expresión lambda para manejar el evento de clic\n        \u002F\u002F En particular, usamos la notación de función de referencia \n        \u002F\u002F (method reference) para referenciar la función clickEvent directamente\n        button.addActionListener(this::clickEvent);\n\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setSize(300, 200);\n        frame.add(button);\n        frame.setVisible(true);\n    }\n\n    \u002F\u002F Manejar el evento de clic en el botón con una función separada para mantener \n    \u002F\u002F el código organizado siempre será una buena práctica para mejorar la \n    \u002F\u002F legibilidad y mantenibilidad del código.\n    private void clickEvent(ActionEvent e) {\n        \u002F\u002F Aquí puedes definir el comportamiento que deseas cuando se haga clic en el botón\n        System.out.println(\"¡Botón clickeado!\");\n    }\n}\n","java","",[458,496,497,517,525,533,540,556,568,593,613,618,625,631,637,643,663,668,680,701,712,727,733,738,744,750,756,778,784,800,805],{"__ignoreMap":494},[498,499,502,506,510,514],"span",{"class":500,"line":501},"line",1,[498,503,505],{"class":504},"snl16","import",[498,507,509],{"class":508},"s95oV"," javax.swing.",[498,511,513],{"class":512},"sDLfK","*",[498,515,516],{"class":508},";\n",[498,518,520,522],{"class":500,"line":519},2,[498,521,505],{"class":504},[498,523,524],{"class":508}," java.awt.event.ActionEvent;\n",[498,526,528,530],{"class":500,"line":527},3,[498,529,505],{"class":504},[498,531,532],{"class":508}," java.awt.event.ActionListener;\n",[498,534,536],{"class":500,"line":535},4,[498,537,539],{"emptyLinePlaceholder":538},true,"\n",[498,541,543,546,549,553],{"class":500,"line":542},5,[498,544,545],{"class":504},"public",[498,547,548],{"class":504}," class",[498,550,552],{"class":551},"svObZ"," EventExample",[498,554,555],{"class":508}," {\n",[498,557,559,562,565],{"class":500,"line":558},6,[498,560,561],{"class":504},"    void",[498,563,564],{"class":551}," main",[498,566,567],{"class":508},"() {\n",[498,569,571,574,577,580,583,586,590],{"class":500,"line":570},7,[498,572,573],{"class":508},"        JFrame frame ",[498,575,576],{"class":504},"=",[498,578,579],{"class":504}," new",[498,581,582],{"class":551}," JFrame",[498,584,585],{"class":508},"(",[498,587,589],{"class":588},"sU2Wk","\"Ejemplo de Eventos\"",[498,591,592],{"class":508},");\n",[498,594,596,599,601,603,606,608,611],{"class":500,"line":595},8,[498,597,598],{"class":508},"        JButton button ",[498,600,576],{"class":504},[498,602,579],{"class":504},[498,604,605],{"class":551}," JButton",[498,607,585],{"class":508},[498,609,610],{"class":588},"\"Haz clic aquí\"",[498,612,592],{"class":508},[498,614,616],{"class":500,"line":615},9,[498,617,539],{"emptyLinePlaceholder":538},[498,619,621],{"class":500,"line":620},10,[498,622,624],{"class":623},"sAwPA","        \u002F\u002F Implementar el ActionListener\n",[498,626,628],{"class":500,"line":627},11,[498,629,630],{"class":623},"        \u002F\u002F Aquí estamos utilizando una expresión lambda para manejar el evento de clic\n",[498,632,634],{"class":500,"line":633},12,[498,635,636],{"class":623},"        \u002F\u002F En particular, usamos la notación de función de referencia \n",[498,638,640],{"class":500,"line":639},13,[498,641,642],{"class":623},"        \u002F\u002F (method reference) para referenciar la función clickEvent directamente\n",[498,644,646,649,652,654,657,660],{"class":500,"line":645},14,[498,647,648],{"class":508},"        button.",[498,650,651],{"class":551},"addActionListener",[498,653,585],{"class":508},[498,655,656],{"class":512},"this",[498,658,659],{"class":504},"::",[498,661,662],{"class":508},"clickEvent);\n",[498,664,666],{"class":500,"line":665},15,[498,667,539],{"emptyLinePlaceholder":538},[498,669,671,674,677],{"class":500,"line":670},16,[498,672,673],{"class":508},"        frame.",[498,675,676],{"class":551},"setDefaultCloseOperation",[498,678,679],{"class":508},"(JFrame.EXIT_ON_CLOSE);\n",[498,681,683,685,688,690,693,696,699],{"class":500,"line":682},17,[498,684,673],{"class":508},[498,686,687],{"class":551},"setSize",[498,689,585],{"class":508},[498,691,692],{"class":512},"300",[498,694,695],{"class":508},", ",[498,697,698],{"class":512},"200",[498,700,592],{"class":508},[498,702,704,706,709],{"class":500,"line":703},18,[498,705,673],{"class":508},[498,707,708],{"class":551},"add",[498,710,711],{"class":508},"(button);\n",[498,713,715,717,720,722,725],{"class":500,"line":714},19,[498,716,673],{"class":508},[498,718,719],{"class":551},"setVisible",[498,721,585],{"class":508},[498,723,724],{"class":512},"true",[498,726,592],{"class":508},[498,728,730],{"class":500,"line":729},20,[498,731,732],{"class":508},"    }\n",[498,734,736],{"class":500,"line":735},21,[498,737,539],{"emptyLinePlaceholder":538},[498,739,741],{"class":500,"line":740},22,[498,742,743],{"class":623},"    \u002F\u002F Manejar el evento de clic en el botón con una función separada para mantener \n",[498,745,747],{"class":500,"line":746},23,[498,748,749],{"class":623},"    \u002F\u002F el código organizado siempre será una buena práctica para mejorar la \n",[498,751,753],{"class":500,"line":752},24,[498,754,755],{"class":623},"    \u002F\u002F legibilidad y mantenibilidad del código.\n",[498,757,759,762,765,768,771,775],{"class":500,"line":758},25,[498,760,761],{"class":504},"    private",[498,763,764],{"class":504}," void",[498,766,767],{"class":551}," clickEvent",[498,769,770],{"class":508},"(ActionEvent ",[498,772,774],{"class":773},"s9osk","e",[498,776,777],{"class":508},") {\n",[498,779,781],{"class":500,"line":780},26,[498,782,783],{"class":623},"        \u002F\u002F Aquí puedes definir el comportamiento que deseas cuando se haga clic en el botón\n",[498,785,787,790,793,795,798],{"class":500,"line":786},27,[498,788,789],{"class":508},"        System.out.",[498,791,792],{"class":551},"println",[498,794,585],{"class":508},[498,796,797],{"class":588},"\"¡Botón clickeado!\"",[498,799,592],{"class":508},[498,801,803],{"class":500,"line":802},28,[498,804,732],{"class":508},[498,806,808],{"class":500,"line":807},29,[498,809,810],{"class":508},"}\n",[423,812,813,814,816,817,820,821,823,824,695,827,695,830,833],{},"En este ejemplo, hemos creado un botón y registrado un ",[458,815,460],{}," utilizando una expresión lambda que hace referencia a la función ",[458,818,819],{},"clickEvent",". Cuando el usuario hace clic en el botón, se ejecuta el método ",[458,822,819],{},", que imprime un mensaje en la consola. Este es un ejemplo básico, pero puedes manejar una amplia variedad de eventos utilizando diferentes tipos de Listeners, como ",[458,825,826],{},"MouseListener",[458,828,829],{},"KeyListener",[458,831,832],{},"WindowListener",", entre otros, para responder a diferentes acciones del usuario y eventos del sistema.",[418,835,837],{"id":836},"lista-de-listeners-comunes-en-swing","Lista de Listeners comunes en Swing",[839,840,841,853],"table",{},[842,843,844],"thead",{},[845,846,847,850],"tr",{},[848,849,439],"th",{},[848,851,852],{},"Evento que maneja",[854,855,856,866,875,884,893,903,913,923,933],"tbody",{},[845,857,858,863],{},[859,860,861],"td",{},[458,862,460],{},[859,864,865],{},"Maneja eventos de acción, como clics de botones.",[845,867,868,872],{},[859,869,870],{},[458,871,826],{},[859,873,874],{},"Maneja eventos relacionados con el mouse, como clics, movimientos, etc.",[845,876,877,881],{},[859,878,879],{},[458,880,829],{},[859,882,883],{},"Maneja eventos relacionados con el teclado, como teclas presionadas, liberadas, etc.",[845,885,886,890],{},[859,887,888],{},[458,889,832],{},[859,891,892],{},"Maneja eventos relacionados con la ventana, como apertura, cierre, minimización, etc.",[845,894,895,900],{},[859,896,897],{},[458,898,899],{},"FocusListener",[859,901,902],{},"Maneja eventos relacionados con el enfoque de los componentes, como ganancia o pérdida de enfoque.",[845,904,905,910],{},[859,906,907],{},[458,908,909],{},"ItemListener",[859,911,912],{},"Maneja eventos relacionados con elementos seleccionables, como casillas de verificación o botones de radio.",[845,914,915,920],{},[859,916,917],{},[458,918,919],{},"ChangeListener",[859,921,922],{},"Maneja eventos relacionados con cambios en el estado de los componentes, como cambios en un slider o un spinner.",[845,924,925,930],{},[859,926,927],{},[458,928,929],{},"DocumentListener",[859,931,932],{},"Maneja eventos relacionados con cambios en el contenido de un documento, como cambios en un campo de texto.",[845,934,935,940],{},[859,936,937],{},[458,938,939],{},"ComponentListener",[859,941,942],{},"Maneja eventos relacionados con cambios en el tamaño, posición o visibilidad de los componentes.",[423,944,945,946,461],{},"Para mayor referencia, puedes consultar la documentación oficial de Java para obtener una lista completa de los Listeners disponibles en Swing y sus métodos asociados en el siguiente enlace: ",[947,948,952],"a",{"href":949,"rel":950},"https:\u002F\u002Fdocs.oracle.com\u002Fjavase\u002Ftutorial\u002Fuiswing\u002Fevents\u002Findex.html",[951],"nofollow","Java Swing Listeners",[418,954,956],{"id":955},"conclusión","Conclusión",[423,958,959],{},"En este apartado hemos aprendido sobre los eventos en Swing y cómo manejarlos utilizando Listeners. Los eventos son fundamentales para crear interfaces gráficas interactivas, ya que nos permiten responder a las acciones del usuario y a los eventos del sistema. Al implementar los Listeners correspondientes y registrar estos Listeners en los componentes adecuados, podemos definir el comportamiento de nuestra aplicación en respuesta a diferentes eventos, lo que mejora la experiencia del usuario y hace que nuestra aplicación sea más funcional e interactiva. En los siguientes apartados, exploraremos más técnicas y componentes para seguir mejorando nuestras interfaces gráficas en Java con Swing.",[961,962,963],"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 .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}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);}",{"title":494,"searchDepth":519,"depth":519,"links":965},[966,967,968,969,970],{"id":420,"depth":519,"text":421},{"id":428,"depth":519,"text":269},{"id":480,"depth":519,"text":481},{"id":836,"depth":519,"text":837},{"id":955,"depth":519,"text":956},"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.","md",null,{"editButton":42},{"title":269,"description":971},"QB4wpJRzpXq5kw1cVQH6EHYoVtm4t92ocqlhqJJBX8Y",[978,980],{"title":265,"path":266,"stem":267,"description":979,"children":-1},"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.",{"title":273,"path":274,"stem":275,"description":981,"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.",1779479574802]