<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9157078824870605615</id><updated>2011-11-27T17:22:20.119-08:00</updated><category term='primos'/><category term='JSP'/><category term='JSlider'/><category term='String'/><category term='Math'/><category term='Keytool'/><category term='Palette'/><category term='Tokenizer'/><category term='Programas'/><category term='GUI'/><category term='Swing'/><category term='division de cadenas'/><category term='Deitel y Deitel'/><category term='Programacion II'/><category term='JFileChooser'/><category term='implementación'/><category term='Clases'/><category term='certificados SSL'/><category term='SSL'/><category term='JTextArea'/><category term='separacion de cadenas'/><category term='librería de clases'/><category term='ActionPerformed'/><category term='abstract'/><category term='POO'/><category term='FlowLayout'/><category term='Debian'/><category term='JMenuItem'/><category term='JPanel'/><category term='JFrame'/><category term='Java'/><category term='fibonacci'/><category term='Polimorfismo'/><category term='Try-Catch'/><category term='Herencia'/><category term='Jar'/><category term='library class'/><category term='Netbeans'/><category term='JMenuBar'/><category term='JDK'/><category term='Substance'/><category term='Layout'/><category term='Parcial'/><category term='Linux'/><category term='Internal Frame'/><category term='Herencia Múltiple'/><category term='KeyReleased'/><category term='Ejemplos'/><category term='Ejercicios'/><category term='JSpinner'/><category term='JOptionPane'/><category term='Split'/><title type='text'>Java Para Todos</title><subtitle type='html'>Programando en Java y compilando en todos lados...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-7666160679763344623</id><published>2009-06-13T14:17:00.000-07:00</published><updated>2009-06-13T15:45:10.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Programas'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Programas destacados de Tarea Ex Aula Programación II Ciclo I/09</title><content type='html'>Tengo el agrado de mostrar los mejores trabajos que los alumnos de Programación II de la Universidad de El Salvador de la FMO entregaron como parte de las prácticas de dicha materia. Este trabajo valía 1 punto de la nota global.&lt;br /&gt;&lt;br /&gt;Por cada clave, los mejores trabajos fueron los siguientes:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;PROCESADOR DE TEXTO&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;El grupo de práctica No. 1 entregó dicha clave, y el mejor trabajo fue elaborado por:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nelly Celinda Hernández González&lt;/li&gt;&lt;li&gt;José Guillermo Ruiz Vargas&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Su trabajo puede ser descargado desde el siguiente link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=3YKTA547"&gt;http://www.megaupload.com/?d=3YKTA547&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;INFORMACIÓN PERSONAL Y LLENADO DE JTABLES&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;El mejor programa de esta clave fueron los estudiantes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Gabriel Enrique Carballo Portillo&lt;/li&gt;&lt;li&gt;Herber Oswaldo Gómez Arana&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pueden descargar su programa en este link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=KBLTKYNZ"&gt;http://www.megaupload.com/?d=KBLTKYNZ&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Mención honorífica para:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;María José Romualdo Villalta&lt;/li&gt;&lt;li&gt;Luis Mario Siguenza Cruz&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: justify;"&gt;Quedaron descalificados de esta mención Alberto Moreno y Wendy Chicas por haber dejado el CD en blanco.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;PROGRAMA DE ENCUESTAS&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;El mejor fue el estudiante:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edgardo Caleb Flores Brizuela&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Puede descargarlo de este link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=CHN0RI3Z"&gt;http://www.megaupload.com/?d=CHN0RI3Z&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Mención honorífica para:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Giovany Rosales Hernández&lt;/li&gt;&lt;li&gt;Julianne Michelle Polanco Aragón&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;GENERADOR DE NÚMEROS ALEATORIOS&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;El mejor trabajo fue presentado por los estudiantes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nefi José Cetino Velásquez&lt;/li&gt;&lt;li&gt;Juan Carlos Mendoza Dimas&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pueden descargarlo desde este link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=D74AOVG7"&gt;http://www.megaupload.com/?d=D74AOVG7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Además hubo otros trabajos muy buenos. Mención honorífica para:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rafael Manfredo&lt;/li&gt;&lt;li&gt;Jorge Guerra Quant&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Juan Carlos Arteaga Ortiz&lt;/li&gt;&lt;li&gt;Francisco Ovidio Castillo Lico&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pablo Oswaldo Portillo Alvarado&lt;/li&gt;&lt;li&gt;Karla Flor Grissel Chicas Blanco&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;CARRITO DE COMPRAS&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Hubo triple empate en esta clave. Los mejores trabajos fueron de los siguientes autores:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Isaac Alexander Gómez Recinos&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Kevin Garay Calderón&lt;/li&gt;&lt;li&gt;Neyson Ramírez Ascencio&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Byron Ernesto Guerrero Landaverde&lt;/li&gt;&lt;li&gt;Oscar Gustavo Rodríguez Umaña&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Los tres programas pueden ser descargados desde el siguiente link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=BS9NY1B5"&gt;http://www.megaupload.com/?d=BS9NY1B5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;JUEGO DE MEMORIA&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;El mejor trabajo fue entregado por el alumno:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edwin de Jesús Mendoza Granadino&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Descarguen este juego desde el siguiente link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=40O19FYS"&gt;http://www.megaupload.com/?d=40O19FYS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;JUEGO DE EQUIS CERO&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;El mejor juego lo entregó:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Franklin Martínez&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Descárguenlo desde este link:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.megaupload.com/?d=XWOHUNFT"&gt;http://www.megaupload.com/?d=XWOHUNFT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Hubo otros buenos juegos. Menciones honoríficas para:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Denis Stanley Urbina Jiménez&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;César Ernesto Quezada Peñate&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Elias Ricardo Zaldaña Herrera&lt;/li&gt;&lt;li&gt;Victor Manuel Rivera Barrera&lt;/li&gt;&lt;li&gt;Walter Ernesto Hernández Ramírez&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Este su servidor se desliga de cualquier error que puedan tener dichos programas. Recuerden que todos son proyectos de Netbeans 6.1 o superior, utilizando JDK 1.6&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-7666160679763344623?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/7666160679763344623/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/06/programas-destacados-de-tarea-ex-aula.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7666160679763344623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7666160679763344623'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/06/programas-destacados-de-tarea-ex-aula.html' title='Programas destacados de Tarea Ex Aula Programación II Ciclo I/09'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-845172669118416479</id><published>2009-06-13T13:38:00.000-07:00</published><updated>2009-06-13T14:15:37.212-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Parcial'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Material para parcial 4 Programación II 2009</title><content type='html'>Hola a todos!&lt;br /&gt;&lt;br /&gt;El material para el cuarto y último examen parcial de Programación II del Ciclo I/09 se encuentra ya a su disposición para que lo descarguen a través del siguiente link:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;a href="http://www.megaupload.com/?d=CTOFWA9B"&gt;http://www.megaupload.com/?d=CTOFWA9B&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Recuerden que el parcial será práctico. Dispondrán de 50 minutos para su elaboración. Quien disponga de una laptop para realizarlo no dude en llevarla.&lt;br /&gt;&lt;br /&gt;Recuerde que al final tendrán que enviar su programa a la siguiente dirección de correo electrónico:&lt;br /&gt;&lt;div style="text-align: center; color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="mailto:examenesytareas@gmail.com"&gt;examenesytareas@gmail.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Es por ello que les solicito que creen una cuenta en &lt;a href="http://www.gmail.com"&gt;GMAIL&lt;/a&gt; de correo electrónico para enviar su examen y evitar los ya conocidos incidentes con hotmail. SI USTED NO LO ENVÍA AL FINALIZAR EL EXAMEN SE LE ADJUDICARÁ UNA NOTA DE 1.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Buena suerte!!!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-845172669118416479?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/845172669118416479/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/06/material-para-parcial-4-programacion-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/845172669118416479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/845172669118416479'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/06/material-para-parcial-4-programacion-ii.html' title='Material para parcial 4 Programación II 2009'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-3577112255796786411</id><published>2009-06-07T23:49:00.000-07:00</published><updated>2009-06-07T23:56:54.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jar'/><category scheme='http://www.blogger.com/atom/ns#' term='JSpinner'/><category scheme='http://www.blogger.com/atom/ns#' term='JSlider'/><category scheme='http://www.blogger.com/atom/ns#' term='Substance'/><category scheme='http://www.blogger.com/atom/ns#' term='JPanel'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Componentes avanzados en Swing de Java</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Programación II&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Guía de Laboratorio 5: Componentes GUI avanzados de Swing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desarrollo del 8 al 12 de junio de 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta guía está dedicada para manejar algunos de los componentes avanzados que provee Swing para aplicaciones Desktop. Esta guía consiste en elaborar un selector de color construyéndolo a partir del Modelo de Color RGB y con componentes Swing como JPanels, JSliders y JSpinners, entre otros. Además cambiaremos la apariencia de nuestras aplicaciones Swing de Java.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Modelo de Color RGB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El modelo de color RGB, del inglés Red, Green, Blue, hace referencia a la composición de colores en términos de la intensidad de los colores primarios con que se forma: el rojo, el verde y el azul. Es un modelo de color basado en la síntesis aditiva, con el que es posible representar un color mediante la mezcla por adición de los tres colores luz primarios. Indicar que el modelo de color RGB no define por sí mismo lo que significa exactamente rojo, verde o azul, razón por la cual los mismos valores RGB pueden mostrar colores notablemente diferentes en diferentes dispositivos que usen este modelo de color.  Aunque utilicen un mismo modelo de color, sus espacios de color pueden variar considerablemente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JSlider&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los objetos JSlider permiten al usuario seleccionar de entre un rango de valores enteros, La clase JSlider hereda de JComponent. Está compuesto por el indicador, con el que seleccionamos el valor deseado y las marcas, que nos muestran cuáles son los valores a escoger.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JSpinner&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los objetos JSpinner permiten al usuario seleccionar un número y recorrer la lista de los mismos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Apariencia Visual Adaptable&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los componentes Swing por el hecho que son controles ligeros, es decir que no dependen de la plataforma para asumir una apariencia visual, se pueden adaptar a otras “pieles” o Look and Feels. Sehace con la clase UIManager.  Para esta guía utilizaremos el Look and Feel Substance&lt;br /&gt;&lt;br /&gt;Luego de esta introducción teórica, para empezar esta guía, construyamos una GUI con el Netbeans Designer que luzca así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/Siy0zNcj4KI/AAAAAAAABho/QMlmGEf-TaE/s1600-h/SELECTOR.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/Siy0zNcj4KI/AAAAAAAABho/QMlmGEf-TaE/s320/SELECTOR.png" alt="" id="BLOGGER_PHOTO_ID_5344845649657716898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Consiste en:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3 JSlider&lt;/li&gt;&lt;li&gt;3 JSpinner&lt;/li&gt;&lt;li&gt;1 JPanel&lt;/li&gt;&lt;li&gt;3 JLabel&lt;/li&gt;&lt;li&gt;1 JButton (otra parte de la práctica)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Moviendo los JSliders o modificando la cantidad de los JSpinners debemos modificar el color que se muestra en el panel de la derecha. Para ello, crearemos un método en el cual le cambiaremos el color del panel con su método setBackground() crearemos un nuevo color con modelo RGB con la ayuda de los valores de cada JSlider o JSpinner:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public void cambiarColor()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      colorJPanel.setBackground( new java.awt.Color( &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;         JSliderRojo.getValue(), JSliderVerde.getValue(), &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;         JSliderAzul.getValue() ) );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   } &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cada JSlider y JSpinner debe modificar al control contrario pero que manejan el mismo color. En los eventos StateChange() de cada uno debe ir código similar a este:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;//Codigo para JSlider y JSpinner del color ROJO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;//codigo evento JSlider: modifica el valor de JSpinner y manda a modificar el color del JPanel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private void redJSliderStateChanged(javax.swing.event.ChangeEvent ev&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;t) {                                            &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      this.spnRojo.setValue(this.JSliderRojo.getValue());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      changeColor();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   }                                       &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;//codigo evento JSpinner: modifica el valor de JSlider y manda a modificar el color del JPanel&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   private void spnRojoStateChanged(javax.swing.event.ChangeEvent evt) {                                     &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       this.JSliderRojo.setValue((Integer)spnRojo.getValue());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       changeColor();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   }                      &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La aplicación debe lucir así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Siy0zXG3dHI/AAAAAAAABhw/kMkCK6y5nHU/s1600-h/SELECTORUTILIZADO.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 114px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Siy0zXG3dHI/AAAAAAAABhw/kMkCK6y5nHU/s320/SELECTORUTILIZADO.png" alt="" id="BLOGGER_PHOTO_ID_5344845652251079794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora le asignaremos el look and feel substance a nuestra aplicación. Descargamos el Jar que contiene el look and feel y lo colocamos en la carpeta lib del proyecto (si no existe, creamos una) y luego agregamos el Jar de la librería al proyecto. Creamos un botón que nos sirva para colocarle una nueva apariencia a la aplicación. En el códico del actionPerformed escribimos la siguiente línea:&lt;br /&gt;&lt;br /&gt;UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceCremeCoffeeLookAndFeel");&lt;br /&gt;&lt;br /&gt;O esta otra:&lt;br /&gt;&lt;br /&gt;SubstanceLookAndFeel.setSkin(new org.jvnet.substance.skin.BusinessSkin());&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La aplicación debe lucir así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Siy0zSMzrzI/AAAAAAAABh4/Sdcb2bQt10Y/s1600-h/LOOKANDFEEL.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 109px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Siy0zSMzrzI/AAAAAAAABh4/Sdcb2bQt10Y/s320/LOOKANDFEEL.png" alt="" id="BLOGGER_PHOTO_ID_5344845650933821234" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Look and Feel Substance Creme Coffee&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Así tiene otra apariencia en lugar del ya tradicional metálico.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-3577112255796786411?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/3577112255796786411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/06/componentes-avanzados-en-swing-de-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/3577112255796786411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/3577112255796786411'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/06/componentes-avanzados-en-swing-de-java.html' title='Componentes avanzados en Swing de Java'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_on8T2PWMfto/Siy0zNcj4KI/AAAAAAAABho/QMlmGEf-TaE/s72-c/SELECTOR.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-1800521988353723399</id><published>2009-05-28T17:04:00.000-07:00</published><updated>2009-05-28T17:06:29.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><title type='text'>Material para parcial 3 Programación II 2009</title><content type='html'>El material incluye:&lt;br /&gt;&lt;br /&gt;Guiones de clase y teoría&lt;br /&gt;Programas de ejemplo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El link para descargar via MegaUpload es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://www.megaupload.com/?d=1RO1Q5S4"&gt;http://www.megaupload.com/?d=1RO1Q5S4&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;BUENA SUERTE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-1800521988353723399?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/1800521988353723399/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/05/material-para-parcial-3-programacion-ii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/1800521988353723399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/1800521988353723399'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/05/material-para-parcial-3-programacion-ii.html' title='Material para parcial 3 Programación II 2009'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-5925761909709562070</id><published>2009-05-25T00:25:00.000-07:00</published><updated>2009-05-25T01:21:37.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><title type='text'>Tareas Ex Aula Programación II Ciclo I-2009</title><content type='html'>Estos son los enunciados de las tareas ex-aula para la cátedra de Programación II. Vale el 10% de la nota global de la materia. Estas son las indicaciones generales:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Es un enunciado por grupo de laboratorio. Son un total de 7 enunciados distintos con similar grado de dificultad.&lt;/li&gt;&lt;li&gt;Se formarán parejas del mismo grupo de laboratorio. Si el grupo de estudiantes es impar, solamente se permitirá un grupo de tres integrantes, siendo más severa la evaluación para dicho grupo.&lt;/li&gt;&lt;li&gt;Cada estudiante debe realizar la tarea del grupo en el cual está legítimamente inscrito según los listados del auxiliar.&lt;/li&gt;&lt;li&gt;La entrega constará en una revisión que el auxiliar realizará al código y la funcionalidad de dicha aplicación Java. También cada grupo deberá llevar su trabajo copiado en un CD debidamente rotulado con la información de cada integrante y al grupo de laboratorio que pertenecen.&lt;/li&gt;&lt;li&gt;Soluciones iguales tienen nota de 1 (uno).&lt;/li&gt;&lt;li&gt;Soluciones plagiadas de Internet tienen nota de 1 (uno).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Todas las aplicaciones deben de utilizar controles Swing.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fecha de Entrega: Miércoles 10 de junio de 2009.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;ENUNCIADOS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Grupo 1&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Crear un editor de texto plano con controles Swing que permita crear un archivo de texto y guardarlo en el disco duro, y también que permita cargar un archivo txt, modificarlo y guardarlo, ya sea con el mismo nombre o con otro distinto.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 2&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Crear un formulario de ingreso de datos de un persona con información de propósito general. Luego dicha información, debe quedar almacenada en un archivo de texto en el disco duro y también debe de mostrar un JDialog que contenga un JTable con toda la información que se ingresó de la persona a manera de una tabla resumen.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 3&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Crear un formulario que albergue una encuesta con un mínimo de 15 preguntas. Deben de ser preguntas de contestar y selección múltiple. Si no puede mostrar todas las preguntas en un mismo JPane, puede utilizar un JTabbedPane para que las muestre ordenadas. Luego la información de cada encuesta debe quedar almacenada en un archivo de texto en el disco duro, y desplegarla a manera de resumen en un JDialog.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 4&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Crear una aplicación Java que genere números aleatorios con la ayuda de JSliders y JSpinners que maneje rangos mínimos y máximos de dichos números. El rango mayor no debe de sobrepasar al menor y viceversa. Cada número generado debe ser registrado en un archivo de texto plano que sea el log de la aplicación.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 5&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Diseñar un carrito de compras con productos y precios predeterminados por el desarrollador. La selección de productos y la cantidad de ellos puede realizarla s con la ayuda de JComboBoxes o JLists. Cada factura generada debe ser guardada en un archivo de texto plano en el disco duro.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 6&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Diseñar un juego de Memory de pares de imágenes. Entre menos intentos fallidos, mejor será la puntuación. Al final de cada partida debe mostrar el resultado y la puntuación del jugador. Luego debe de guardar el top score  del juego en un archivo de texto plano dentro del disco duro y modificarlo cada vez que haya un juego nuevo.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Grupo 7&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Diseña un juego de Equis Cero dond jueguen dos personas unicamente. Modo de jugador vs. PC deshabilitado. Se deben definir dos jugadores y  debe de contar el número de juegos que desean jugar. El puntaje se tomará como el jugador que gane más juego en una sesión contra otro jugador. El top score  del juego debe ser guardado en un archivo de texto y modificarlo cada vez que haya un nuevo juego.&lt;br /&gt;&lt;br /&gt;Mucha suerte&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-5925761909709562070?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/5925761909709562070/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/05/tareas-ex-aula-programacion-ii-ciclo-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5925761909709562070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5925761909709562070'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/05/tareas-ex-aula-programacion-ii-ciclo-i.html' title='Tareas Ex Aula Programación II Ciclo I-2009'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-6098965966156003123</id><published>2009-05-24T23:19:00.001-07:00</published><updated>2009-05-24T23:48:41.097-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jar'/><category scheme='http://www.blogger.com/atom/ns#' term='JMenuBar'/><category scheme='http://www.blogger.com/atom/ns#' term='JFileChooser'/><category scheme='http://www.blogger.com/atom/ns#' term='Palette'/><category scheme='http://www.blogger.com/atom/ns#' term='JPanel'/><category scheme='http://www.blogger.com/atom/ns#' term='JMenuItem'/><category scheme='http://www.blogger.com/atom/ns#' term='GUI'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Programación de GUI con Componentens Swing en Netbeans</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Programación II&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Guía de Laboratorio 4: Creación de GUI con componentes Swing en Netbeans&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desarrollo del 25 al 29 de mayo de 2009&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta guía está dedicada a crear aplicaciones de escritorio en Java con la ayuda de componentes Swing.  El IDE de programación de esta cátedra ha sido Netbeans y este nos proporciona un diseñador para crear aplicaciones de una manera sencilla, sin preocuparnos demasiado del código que implica la forma de la GUI. Simplemente nos debemos de centrar en el funcionamiento de la misma. Sin embargo, el ejercicio está enfocado a realizar algunas partes de la guía de tal manera que debamos conocer el código propio de los componentes Swing, para que nos formemos como buenos programadores de ambientes de escritorio.&lt;br /&gt;&lt;br /&gt;En el ejercicio se debe crear un Visor de Imágenes en formatos JPG y PNG. Para ello se crearán: la interfaz en donde el usuario escogerá la imagen que desea visualizar, una clase que administre los archivos seleccionados y  una clase que manipule la imagen seleccionada, una clase que herede de un componente swing y agregarla a la paleta de Netbeans para tener un control personalizado y poderlo arrastrar y colocar como cualquier otro del IDE. La estructura de clases será como el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/Sho869WJinI/AAAAAAAABhE/HhCgFEJdHCM/s1600-h/clasesVisor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 155px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/Sho869WJinI/AAAAAAAABhE/HhCgFEJdHCM/s320/clasesVisor.png" alt="" id="BLOGGER_PHOTO_ID_5339647291798686322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Primero crearemos la clase que nos manipule la imagen que seleccionará el usuario.  La clase MiImagen es nuestro propio formato personalizado para representar una imagen en la memoria del computador. Se puede pensar que MiImagen es un arreglo bidimensional de pixeles en el cual cada uno de ellos puede tener un color, que se definirá con java.awt.Color. El código sería muy similar a este:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.Color;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.image.BufferedImage;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;public class MiImagen extends java.awt.image.BufferedImage&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     * Crea una instancia de MiImagen a partir de una BufferedImage.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    public MiImagen(BufferedImage image){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;         super(image.getColorModel(), image.copyData(null), image.isAlphaPremultiplied(), null); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     * Crea una instancia de MiImagen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    public MiImagen(int width, int height){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        super(width, height, TYPE_INT_RGB);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     *Coloca un color en una posición específica&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    public void setPixel(int x, int y, Color col){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        int pixel = col.getRGB();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        setRGB(x, y, pixel);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     * Obtiene el valor de color en una posición específica&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    public Color getPixel(int x, int y){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        int pixel = getRGB(x, y);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        return new Color(pixel);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La clase AdminArchivos ofrece tres métodos: uno para leer desde el disco un archivo de imagen con nombre y devolverlo como una MiImagen, uno para grabar un archivo MiImagen en el disco y otro para abrir una caja de diálogo de selección de archivos que permite que el usuario seleccione la imagen que desea ver. Los formatos permitidos por filtro son JPEG y PNG. Con la creación de esta clase invocaremos código propio de un componente Swing y le daremos forma únicamente con sentencias dejando de lado el diseñador de Netbeans. El código sería muy similar a éste:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.image.BufferedImage;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.io.File;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.io.IOException;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import javax.imageio.ImageIO;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import javax.swing.JFileChooser;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import javax.swing.filechooser.FileNameExtensionFilter;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;public class AdminArchivos {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   private static final String IMAGE_FORMAT = "jpg";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    private static JFileChooser fileChooser = new JFileChooser();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    private static FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG &amp;amp; PNG", "jpg", "png");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;public static MiImagen obtenerImagen() throws IOException {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        fileChooser.setFileFilter(filter);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        fileChooser.setCurrentDirectory(null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        int returnVal = fileChooser.showOpenDialog(null);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        if(returnVal != JFileChooser.APPROVE_OPTION) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            return null;  // Presiona cancelar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        File selectedFile = fileChooser.getSelectedFile();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        return cargarImagen(selectedFile);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;public static MiImagen cargarImagen(File imageFile) throws IOException&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            BufferedImage image = ImageIO.read(imageFile);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            if(image == null || (image.getWidth(null) &lt;&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                return null; //por si ocurre un error al cargar la imagen&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            return new MiImagen(image);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        catch(IOException exc) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            return null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   public static void guardarImagen(MiImagen image, File file)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            ImageIO.write(image, IMAGE_FORMAT, file);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        catch(IOException exc) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            return;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;El elemento Swing que utilizamos para escoger las imágenes es JFileChooser. Creamos un atributo estático para que se puedan seleccionar las imágenes y le asignamos por defecto la carpeta de usuario para cualquier sistema operativo. Ponga mucha atención a la variable estática de tipo FileNameExtensionFilter, ya que es la que nos permite que en el control JFileChooser de Swing solo nos aparezcan imágenes de tipo JPG. Se pueden definir otro tipo de filtros también.&lt;br /&gt;&lt;br /&gt;Por último la clase ImagePanel implementa un componente Swing personalizado para mostrar nuestra imagen. Los componentes Swing personalizados pueden crearse fácilmente escribiéndolos como una subclase de algún componente existente,  y, como tal, puede insertarse en un contenedor Swing y mostrarse en la GUI como cualquier otro. Nuestro objeto será creado y lo insertaremos en la paleta de Netbeans. Primero debemos crear la clase, con un código como éste:&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.Color;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.Dimension;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import java.awt.Graphics;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;import javax.swing.JComponent;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;public class ImagePanel extends JComponent&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    private int width, height;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    private MiImagen panelImage;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; public ImagePanel()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        width = 360;    // Tamaño arbitrario para la instancia vacía de ImagePanel&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        height = 240;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        panelImage = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; public void setImage(MiImagen image)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        if(image != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            width = image.getWidth();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            height = image.getHeight();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            panelImage = image;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            repaint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; public void clearImage()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        if(panelImage != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            Graphics imageGraphics = panelImage.getGraphics();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            imageGraphics.setColor(Color.LIGHT_GRAY);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            imageGraphics.fillRect(0, 0, width, height);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            repaint();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    // Los siguientes métodos son redefiniciones&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    // de métodos heredados de las superclases.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;@Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; public Dimension getPreferredSize()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        return new Dimension(width, height);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    @Override&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    public void paintComponent(Graphics g)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        Dimension size = getSize();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        g.clearRect(0, 0, size.width, size.height);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        if(panelImage != null) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            g.drawImage(panelImage, 0, 0, null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Luego de escrita la clase, construimos el proyecto para que nos genere una JAR. Así podremos añadir nuestro componente personalizado a la paleta de Netbeans. Nos vamos al menú Tools y en la opción Palette damos click a Add Swing/AWT Components.&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/Sho87GMwPDI/AAAAAAAABhM/qqatB7ujm6U/s1600-h/palette.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 320px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/Sho87GMwPDI/AAAAAAAABhM/qqatB7ujm6U/s320/palette.png" alt="" id="BLOGGER_PHOTO_ID_5339647294175198258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Seleccionamos la opción Add from JAR. Buscamos el JAR generado de nuestro proyecto y lo seleccionamos. Luego volvemos a seleccionar entre una lista de las clases de dicho JAR y damos click a la clase del componente, en este caso es ImagePanel. Seleccionamos la categoría de Swing Components y damos por finalizada la inserción a la paleta.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ahora crearemos un nuevo JFrame Form con ayuda del diseñador de Netbeans.  En el paquete de source code lo creamos y colocaremos los siguientes elementos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    1 JMenuBar&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;o    3 JMenuItem. Las opciones serán: Abrir, Limpiar y Salir&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;o    A cada JMenuItem se le deberá asignar un evento ActionPerformed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    El Layout será BorderLayout&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    2 JLabels. Uno tendrá colocación PAGE_START y el otro PAGE_END&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    1 ImagePanel, con colocación de Layout CENTER. Nombre de instancia: “panelI”.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    En el constructor, asignamos el título de la ventana como “Visor de Imágenes”&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    También en el constructor, Colocamos la posición relativa en “null”&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;•    Si se quiere la ventana maximizada desde el principio, se hace con la siguiente  sentencia:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;this.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;La ventana en modo diseño debe lucir como la siguiente:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/Sho87WCX6RI/AAAAAAAABhU/s8ty5k_XkFI/s1600-h/dise%C3%B1oNetbeans.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 287px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/Sho87WCX6RI/AAAAAAAABhU/s8ty5k_XkFI/s320/dise%C3%B1oNetbeans.jpg" alt="" id="BLOGGER_PHOTO_ID_5339647298426628370" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Ahora para que nos muestre una imagen, debemos agregar las sentencias necesarias en el método que desencadena la acción de ActionPerformed en el JMenuItem para abrir imagen. Las sentencias podrían ser similares a éstas:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;try {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            MiImagen img = AdminArchivos.obtenerImagen();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            panelI.setImage(img);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            this.lblNombreImg.setText(img.getClass().getName());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            this.lblEstado.setText("Imagen cargada con éxito");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            this.setLocationRelativeTo(null);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            this.pack();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            panelI.repaint();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;} catch (IOException ex) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;            Logger.getLogger(visor.class.getName()).log(Level.SEVERE, null, ex);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;La aplicación debe lucir así:&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Sho87Thdo2I/AAAAAAAABhc/_KE2rKVVrLE/s1600-h/visor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 202px; height: 320px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Sho87Thdo2I/AAAAAAAABhc/_KE2rKVVrLE/s320/visor.png" alt="" id="BLOGGER_PHOTO_ID_5339647297751720802" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-6098965966156003123?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/6098965966156003123/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/05/programacion-de-gui-con-componentens.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/6098965966156003123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/6098965966156003123'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/05/programacion-de-gui-con-componentens.html' title='Programación de GUI con Componentens Swing en Netbeans'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_on8T2PWMfto/Sho869WJinI/AAAAAAAABhE/HhCgFEJdHCM/s72-c/clasesVisor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-9165907722414013561</id><published>2009-05-03T17:24:00.000-07:00</published><updated>2009-05-03T17:56:50.970-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='POO'/><category scheme='http://www.blogger.com/atom/ns#' term='Polimorfismo'/><category scheme='http://www.blogger.com/atom/ns#' term='abstract'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Polimorfismo en Java</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Guía de Laboratorio 3: Polimorfismo y Librerías de Clases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Polimorfismo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El polimorfismo es un concepto de la programación orientada a objetos que nos permite programar en forma general, en lugar de hacerlo en forma específica. En general nos sirve para programar objetos con características comunes y que todos estos compartan la misma superclase en una jerarquía de clases, como si todas fueran objetos de la superclase. Esto nos simplifica la programación.&lt;br /&gt;&lt;br /&gt;Recuerde el ejemplo del ecosistema, en donde todos los objetos de las distintas especies heredaban de una superclase llamada Animal, que brindaba la información general de cualquier animal, independiente de su especie. Sin embargo, cada especie hace un uso particular de cada uno de los métodos u operaciones de la clase &lt;span style="font-weight: bold;"&gt;Animal&lt;/span&gt;. El método &lt;span style="font-weight: bold;"&gt;comer()&lt;/span&gt; no se ejecutará de la misma manera en un &lt;span style="font-weight: bold;"&gt;León()&lt;/span&gt; o en un &lt;span style="font-weight: bold;"&gt;Pavo()&lt;/span&gt;. Lo mismo ocurre para métodos moverse() en objetos de tipo &lt;span style="font-weight: bold;"&gt;Tiburón()&lt;/span&gt; o &lt;span style="font-weight: bold;"&gt;Gallina()&lt;/span&gt;, aunque todas las especies realicen estos métodos. A la sobrescritura o implementación específica de métodos es la clave del polimorfismo.&lt;br /&gt;&lt;br /&gt;Para poner en práctica se hará un ejemplo bastante sencillo. Se hará una librería de clases que represente figuras tridimensionales y bidimensionales, y su respectiva jerarquía de clases. Las clases deben ser capaces de tener funcionamiento bastante básico, como obtener áreas, volúmenes y perímetros de la figura correspondiente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La representación de la jerarquía sería como ésta:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/Sf46dscHTPI/AAAAAAAABg8/XOLEcypaecc/s1600-h/polimorfismo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 101px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/Sf46dscHTPI/AAAAAAAABg8/XOLEcypaecc/s320/polimorfismo.png" alt="" id="BLOGGER_PHOTO_ID_5331763290672942322" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Click a la imagen para verla más grande...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;La superclase de dicha jerarquía podría ser muy parecida a ésta:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;figura&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;protected&lt;/span&gt; String &lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;protected int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;color&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;protected int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;grosorBorde&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; String getNombre(){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; setNombre(String n){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;=n;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public int&lt;/span&gt; getColor(){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;color&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; setColor(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; c){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;color&lt;/span&gt;=c;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public int&lt;/span&gt; getGrosorBorde(){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;grosorBorde&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; setGrosorBorde(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; g){&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;grosorBorde&lt;/span&gt;=g;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;dibujar&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Las siguientes clases en el nivel de la jerarquía podrían quedar muy parecidas a éstas:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;figura2D&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;extends&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;figura&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract int&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;calcularArea&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract int&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;calcularPerimetro&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;figura3D&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;extends&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;figura&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public abstract int&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;calcularVolumen&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Se le pide que forme las clases de la parte inferior de la jerarquía y que representarían los objetos a instanciarse.&lt;br /&gt;&lt;br /&gt;Además, debe de realizar una implementación de esta librería, en donde el usuario pueda crear nuevas figuras y que éstas se almacenen en un arreglo de figuras.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejercicios:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Realice una jerarquía de clases en donde se representen un cuadrilátero.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mediante esa superclase, realice las clases rectángulo, cuadrado, paralelogramo y trapezoide; que heredarán de ella, convirtiéndose prácticamente en objetos cuadrilátero (superclase).&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-9165907722414013561?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/9165907722414013561/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/05/polimorfismo-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/9165907722414013561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/9165907722414013561'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/05/polimorfismo-en-java.html' title='Polimorfismo en Java'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_on8T2PWMfto/Sf46dscHTPI/AAAAAAAABg8/XOLEcypaecc/s72-c/polimorfismo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-5504872094063934388</id><published>2009-04-28T15:09:00.000-07:00</published><updated>2009-04-28T15:42:36.314-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='separacion de cadenas'/><category scheme='http://www.blogger.com/atom/ns#' term='Split'/><category scheme='http://www.blogger.com/atom/ns#' term='division de cadenas'/><category scheme='http://www.blogger.com/atom/ns#' term='Tokenizer'/><category scheme='http://www.blogger.com/atom/ns#' term='String'/><title type='text'>Dividir Cadenas en Java</title><content type='html'>Pareciera algo sencillo y simple, que no es digno para un artículo, sin embargo la división de cadenas de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;carácteres&lt;/span&gt; da algunos problemas, más que todo a los programadores principiantes. Este artículo explicará esta tarea con dos formas: con el método &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;split&lt;/span&gt;()&lt;/span&gt; de la clase &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;String&lt;/span&gt; y con la clase &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Tokenizer&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Este sencillo código realiza la separación de la cadena "Políticas de Calidad" en los espacios en blanco que se encuentren:&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;String&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;cad&lt;/span&gt; = &lt;span style="color: rgb(255, 153, 0);"&gt;"&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Politicas&lt;/span&gt; de Calidad"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;/*Primero lo realizaremos con Tokenizer. Hay que crear una nueva instancia de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Tokenizer&lt;/span&gt;. Por defecto separa con cada espacio en blanco que encuentre de la cadena que se le manda como parámetro*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;StringTokenizer&lt;/span&gt; tokens = &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;new&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;StringTokenizer&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;cad&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;//Mientras encuentre más tokens, es decir separaciones, que imprima cada token con nextToken():&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;while&lt;/span&gt;&lt;/span&gt;(tokens.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;hasMoreTokens&lt;/span&gt;()){&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;out&lt;/span&gt;&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;println&lt;/span&gt;(tokens.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;nextToken&lt;/span&gt;());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;out&lt;/span&gt;&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;println&lt;/span&gt;(&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;"\n\n"&lt;/span&gt;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;/*Ahora lo haremos con split(). Con los patrones \\ indicamos cuál es la condición para la separación. En este caso es el espacio en blanco. Recuerde que el resultado de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;split&lt;/span&gt; devuelve un arreglo de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;String&lt;/span&gt; */&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;String&lt;/span&gt; [ ] palabra = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;cad&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;split&lt;/span&gt;(&lt;span style="color: rgb(255, 153, 0);"&gt;"\\ "&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;int&lt;/span&gt; j=0;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;while&lt;/span&gt;&lt;/span&gt;(j&lt;palabra.&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt; &lt;= palabra.lenght-1){&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;out&lt;/span&gt;&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;println&lt;/span&gt;(palabra [ j ]);&lt;br /&gt;j++;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Espero que este artículo ayude a muchos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/palabra.&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-5504872094063934388?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/5504872094063934388/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/04/dividir-cadenas-en-java.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5504872094063934388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5504872094063934388'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/04/dividir-cadenas-en-java.html' title='Dividir Cadenas en Java'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-8951982051477393481</id><published>2009-04-26T18:54:00.000-07:00</published><updated>2009-04-27T08:54:22.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='fibonacci'/><category scheme='http://www.blogger.com/atom/ns#' term='Jar'/><category scheme='http://www.blogger.com/atom/ns#' term='librería de clases'/><category scheme='http://www.blogger.com/atom/ns#' term='primos'/><category scheme='http://www.blogger.com/atom/ns#' term='library class'/><category scheme='http://www.blogger.com/atom/ns#' term='implementación'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Librerías de Clases en Java y Netbeans</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Guía de Laboratorio 3: Polimorfismo y Librerías de Clases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta guía está dedicada para poner en práctica los conocimientos aprendidos en las prácticas anteriores, tales como manejo de clases, métodos, instancias, herencia getters y setters. Además aprenderemos a manejar el polimorfismo, concepto de la programación orientada a objetos, para diseñar nuestras aplicaciones bajo un esquema de jerarquías de herencia, dentro del ámbito de Java con Netbeans, y aprenderemos además a crear nuestras propias librerías con clases y a añadirlas a un proyecto de Netbeans agregando a las referencias de librerías el respectivo Jar contenedor de la librería.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operador instanceof&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El operador instanceof sirve para consultar si un objeto es una instancia de una clase determinada, o de su padre. Pareciera absurdo tratar de conocer cuál es la clase que da lugar a una instancia específica, sin embargo es de mucha utilidad cuando se trabaja con interfaces y herencia a la vez. Veamos un ejemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;primo&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;numero&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;vectorPrimos&lt;/span&gt;[];&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;tamañoV&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;primo&lt;/span&gt;(){&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;tamañoV&lt;/span&gt;=25;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;vectorPrimos&lt;/span&gt;= &lt;span style="color: rgb(51, 51, 255);"&gt;new int&lt;/span&gt; [&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;tamañoV&lt;/span&gt;];&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numero&lt;/span&gt;=0;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; Main {&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;public static void&lt;/span&gt; main(String[] args) {&lt;br /&gt;&lt;br /&gt;   primo p = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; primo();&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;if&lt;/span&gt; (esPrimo(p)){&lt;br /&gt;                   System.&lt;span style="color: rgb(51, 204, 0);"&gt;out&lt;/span&gt;.println(&lt;span style="color: rgb(255, 153, 0);"&gt;"ES INSTANCIA DE PRIMO"&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;   }&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public static boolean&lt;/span&gt; esPrimo(primo p) {&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;(p instanceof primo);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lo que realiza este sencillo ejemplo es comprobar si la instancia llamada “p” corresponde a la clase primo, definida anteriormente, con la ayuda del método estático “esPrimo” que verifica con el operador instanceof si la instancia que se traslada por el parámetro es de la clase que se evalúa. El resultado de dicha operación es true o false.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Librerías de Clases&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora aprenderemos a crear nuestras propias librerías de clases. Estas nos sirven para tener un conjunto de clases que nos sirven para realizar funciones específicas, creadas por el programador y que podremos importar hacia otras aplicaciones Java e implementar dicha funcionalidad.&lt;br /&gt;&lt;br /&gt;Cabe mencionar que debemos tener una gran capacidad de análisis, para lograr abstraer las clases y crear objetos que funcionen de una manera adecuada.&lt;br /&gt;&lt;br /&gt;Para crear nuestra librería, debemos crear un nuevo proyecto Java en Netbeans, escogiendo la opción de Java Class Library:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SfU08j9bVJI/AAAAAAAABf8/4Th2_nje7Sw/s1600-h/classLibrary.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SfU08j9bVJI/AAAAAAAABf8/4Th2_nje7Sw/s320/classLibrary.png" alt="" id="BLOGGER_PHOTO_ID_5329223949112530066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Como pueden leer en la descripción dentro de la imagen, una Class Library no contiene una clase Main para que se pueda correr o implementar las clases que se escriban dentro de la misma. Recuerde que la librería dará insumos a sus aplicaciones para realizar tareas a otras aplicaciones o programas.&lt;br /&gt;&lt;br /&gt;Crearemos una librería que nos servirá para encontrar algunas familias o sucesiones de números. Empezaremos con la sucesión de números Fibonacci y los famosos números Primos. Se crearán clases para encontrar dichas sucesiones de números, conocer el Fibonacci que desee el usuario, evaluar si un número es primo o no, entre otras operaciones. Además, la clase para los fibonacci debe de facilitar métodos y atributos para encontrar los fibonacci que a la vez son primos.&lt;br /&gt;&lt;br /&gt;A medida que el programador vaya escribiendo y concibiendo sus clases, la librería debe lucir de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SfU08aCq0hI/AAAAAAAABfs/-aO-bFiC_h4/s1600-h/library.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 193px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/SfU08aCq0hI/AAAAAAAABfs/-aO-bFiC_h4/s320/library.png" alt="" id="BLOGGER_PHOTO_ID_5329223946450162194" border="0" /&gt;&lt;/a&gt;Para implementar esta librería, basta con construir el proyecto, para generar un Jar que contenga las clases. Luego creamos una nueva aplicación Java que llamaremos ImplementarNumeros:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SfU08DqTojI/AAAAAAAABfk/jtAMc6Eah7U/s1600-h/javaApplication.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 219px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/SfU08DqTojI/AAAAAAAABfk/jtAMc6Eah7U/s320/javaApplication.png" alt="" id="BLOGGER_PHOTO_ID_5329223940442399282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora, con el proyecto creado, hacemos click derecho sobre el nombre del proyecto en el apartado de proyectos de Netbeans y nos dirigimos a las propiedades del mismo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SfU08ir4vVI/AAAAAAAABf0/Nl-x0Qb8_lI/s1600-h/propertiesLibraryJars.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 225px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SfU08ir4vVI/AAAAAAAABf0/Nl-x0Qb8_lI/s320/propertiesLibraryJars.png" alt="" id="BLOGGER_PHOTO_ID_5329223948770524498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Nos dirigimos a la categoría de Libraries. Dentro de ella, agregamos un compilado, que puede ser un proyecto de Netbeans, un folder, una Class Libraryo un Jar. En este caso, agregaremos un Jar, así que presionamos el botón de Add JAR/Folder y buscamos el Jar de nuestra Class Library (Se encuentra en la carpeta dist dentro del folder del proyecto creado por Netbeans).&lt;br /&gt;&lt;br /&gt;Al agregarlo, luego dentro del Main del proyecto, importamos las librerías de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import&lt;/span&gt; numeros.fibonacci;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import &lt;/span&gt;numeros.primo;&lt;br /&gt;&lt;br /&gt;Y ya podremos utilizar toda la funcionalidad de nuestras clases dentro de un proyecto e implementarlas.&lt;br /&gt;&lt;br /&gt;La implementación podría ser muy parecida a esta:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public static void&lt;/span&gt; main(String[] args) {&lt;br /&gt;&lt;br /&gt;   fibonacci f = &lt;span style="color: rgb(51, 51, 255);"&gt;new &lt;/span&gt;fibonacci();&lt;br /&gt;   f.encontrarFibos();&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;v[]=f.getFibos();&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;for&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;i=0;i&lt;25;i++)        &lt;br /&gt;System.&lt;span style="color: rgb(51, 204, 0);"&gt;out&lt;/span&gt;.println(v[i]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ejercicios:&lt;br /&gt;&lt;br /&gt;Alimente su librería de clases con las familias de números:&lt;br /&gt;&lt;br /&gt;Números  Perfectos:  Son  números  naturales  que  son  iguales  a  la  suma  de  sus divisores propios positivos sin incluirse a él mismo.&lt;br /&gt;&lt;br /&gt;Números  Compuestos:  Es  todo  número  natural  no  primo,  a  excepción  de  1,  se denomina  compuesto,  es  decir  que  tiene  uno  o más  divisores  distintos  a  1  y  sí mismo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-8951982051477393481?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/8951982051477393481/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/04/librerias-de-clases-en-java-y-netbeans.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/8951982051477393481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/8951982051477393481'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/04/librerias-de-clases-en-java-y-netbeans.html' title='Librerías de Clases en Java y Netbeans'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_on8T2PWMfto/SfU08j9bVJI/AAAAAAAABf8/4Th2_nje7Sw/s72-c/classLibrary.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-7485149265512804365</id><published>2009-04-19T11:21:00.000-07:00</published><updated>2009-04-19T15:01:54.779-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionPerformed'/><category scheme='http://www.blogger.com/atom/ns#' term='KeyReleased'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Internal Frame'/><category scheme='http://www.blogger.com/atom/ns#' term='JFrame'/><category scheme='http://www.blogger.com/atom/ns#' term='FlowLayout'/><category scheme='http://www.blogger.com/atom/ns#' term='Layout'/><category scheme='http://www.blogger.com/atom/ns#' term='JPanel'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Agregar JPanel en un JFrame en Java y Netbeans</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Set2_m3PemI/AAAAAAAABek/KeyzwCoMl14/s1600-h/jframepadre.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 292px; height: 206px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Set2_m3PemI/AAAAAAAABek/KeyzwCoMl14/s320/jframepadre.jpg" alt="" id="BLOGGER_PHOTO_ID_5326481819431828066" border="0" /&gt;&lt;/a&gt;Muchos compañeros me han pedido ejemplos para agregar o instanciar JFrames o JPanels dentro de otro JFrame. Existe un control Swing llamado Internal Frame que se utiliza para agregar Frames dentro otro. Sin embargo, debemos recordar que un Frame tiene propiedades tales como la barra de títulos, los botones de maximizar, minimizar y cerrar, coloca un nuevo ítem en la barra de tareas en Windows, KDE y Gnome, entre otras propiedades. Cabe destacar que muchas veces estos atributos no serán necesarios y entorpecerían el accionar de la aplicación. Muchas veces necesitamos unicamente un pequeño recuadro e insertarlo en uno u otro JFrame. Así que para esos efectos están los JPanels. Realizaremos un pequeño ejemplo con éstos.&lt;br /&gt;&lt;br /&gt;Vamos a realizar una pequeña aplicación, que consiste en realizar dos de las operaciones básicas: sumas y restas. Para realizar cada una de ellas, el JFrame añade entre sus componentes a dos JPanels, uno para cada operación respectivamente.&lt;br /&gt;&lt;br /&gt;Antes de mostrar cómo crear los JPanels, debemos de cambiar el layout al JFrame que utilizaremos. El Layout es una propiedad de los contenedores Swing para colocar todos los elementos que se contienen dentro de él. Como Java es multiplataforma, y en cada una de ella se disponen de manera distinta el orden de los elementos o componentes. Por lo tanto, Swing lo realiza con la ayuda de los layouts. En modo diseño del JFrame, hacemos click derecho a la opción &lt;span style="font-weight: bold;"&gt;Set Layout&lt;/span&gt; y le asignamos &lt;span style="font-weight: bold; font-style: italic;"&gt;Null Layout&lt;/span&gt;, ya que nosotros colocaremos otro tipo de layout diferente al del diseño libre que nos brinda el editor de diseño de Netbeans. De esta forma:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_on8T2PWMfto/SeuHN_KHqWI/AAAAAAAABes/8ihjiF1R6wk/s1600-h/setLayoutNull.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 221px;" src="http://4.bp.blogspot.com/_on8T2PWMfto/SeuHN_KHqWI/AAAAAAAABes/8ihjiF1R6wk/s320/setLayoutNull.jpg" alt="" id="BLOGGER_PHOTO_ID_5326499658657671522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora sí, creamos dos JPanels desde el navegador de proyectos, uno llamado panelHijoSuma y otro panelHijoResta. Deben quedar de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SeuHetULRqI/AAAAAAAABe8/HIAymCPuq5k/s1600-h/jpanelResta.jpg"&gt; &lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SeuHeSOa2CI/AAAAAAAABe0/lo50gsPa5CI/s1600-h/jpanelSuma.jpg"&gt;&lt;img style="cursor: pointer; width: 221px; height: 158px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SeuHeSOa2CI/AAAAAAAABe0/lo50gsPa5CI/s320/jpanelSuma.jpg" alt="" id="BLOGGER_PHOTO_ID_5326499938653886498" border="0" /&gt;&lt;/a&gt;&lt;a style="font-weight: bold;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SeuHetULRqI/AAAAAAAABe8/HIAymCPuq5k/s1600-h/jpanelResta.jpg"&gt;     &lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SeuHetULRqI/AAAAAAAABe8/HIAymCPuq5k/s1600-h/jpanelResta.jpg"&gt;&lt;img style="cursor: pointer; width: 235px; height: 158px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/SeuHetULRqI/AAAAAAAABe8/HIAymCPuq5k/s320/jpanelResta.jpg" alt="" id="BLOGGER_PHOTO_ID_5326499945925789346" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vean que el último TextBox se encuentra deshabilitado para que sea modificado por el usuario. Este solo presentará el resultado y el usuario jamás lo podrá tocar.&lt;br /&gt;&lt;br /&gt;Al JFrame, tal y como lo observaron al inicio de este artículo solo le agregamos una Menu Bar, y un par de ítems para que luzca así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_on8T2PWMfto/SeuKy5E_MRI/AAAAAAAABfE/VxXH7zii-tU/s1600-h/jframeMenuBar.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 242px; height: 116px;" src="http://4.bp.blogspot.com/_on8T2PWMfto/SeuKy5E_MRI/AAAAAAAABfE/VxXH7zii-tU/s320/jframeMenuBar.jpg" alt="" id="BLOGGER_PHOTO_ID_5326503591215575314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahora, dentro del JFrame, en su constructor, y luego de la inicialización de componentes, vamos a establecer el layout a utilizar. Para este ejercicio, escogí el &lt;span style="font-weight: bold;"&gt;FlowLayout&lt;/span&gt;, que dispone un orden de los elementos horizontal uno tras otro y con cierto espaciado que podemos asignar.&lt;br /&gt;El código dentro del constructor deberá ser el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Constructor&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;framePadre()&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//llamo al constructor padre y le mando el nombre del título de la ventana     &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;super&lt;/span&gt;(&lt;span style="color: rgb(255, 153, 0);"&gt;"Operaciones Básicas"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Función de inicialización de componentes. Netbeans la coloca por defecto&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;initComponents();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Colocamos el nuevo tipo de layout que queremos que tenga nuestro JFrame&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.setLayout(new FlowLayout());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;También creamos dos atributos al JFrame, para más facilidad. Serán dos atributos del tipo de datos de cada uno de los JPanel.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private&lt;/span&gt; panelHijoSuma &lt;span style="color: rgb(51, 204, 0);"&gt;hs&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private&lt;/span&gt; panelHijoResta &lt;span style="color: rgb(51, 204, 0);"&gt;hr&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;Ahora, en cada una de los ítems de la barra de menú, para mostrar el JPanel deseado, colocamos el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Nombre evento&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;nSumaActionPerformed&lt;/span&gt;(java.awt.event.ActionEvent evt) {                                 &lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(102, 102, 102);"&gt;//Si ya está el otro Jpanel añadido al contenedor, entonces se elimina&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.remove(&lt;span style="color: rgb(51, 204, 0);"&gt;hr&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;catch&lt;/span&gt;(Exception e){&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(102, 102, 102);"&gt;//Creamos una nueva instancia de panelHijoSuma&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;hs&lt;/span&gt; = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; panelHijoSuma();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(102, 102, 102);"&gt;//Agregamos la instancia al JFrame, con un layout al centro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.add(&lt;span style="color: rgb(51, 204, 0);"&gt;hs&lt;/span&gt;, BorderLayout.&lt;span style="color: rgb(51, 204, 0);"&gt;CENTER&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(102, 102, 102);"&gt;//Hacemos que el JFrame tenga el tamaño de todos sus elementos&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.pack();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Este código debe de ser similar en los restantes ítems de la Menu Bar, siempre con el evento ActionPerformed.&lt;br /&gt;&lt;br /&gt;Ahora, la parte final de este artículo. Realizaremos cada una de las operaciones dentro del evento de los TextBox, KeyReleased(). De esta forma:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_on8T2PWMfto/SeuQ5J9yXSI/AAAAAAAABfM/9tTkfHnfTa4/s1600-h/eventoKeyReleased+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 229px;" src="http://4.bp.blogspot.com/_on8T2PWMfto/SeuQ5J9yXSI/AAAAAAAABfM/9tTkfHnfTa4/s320/eventoKeyReleased+.png" alt="" id="BLOGGER_PHOTO_ID_5326510295897759010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ahi agregaremos el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;//Nombre del evento. Lo genera Netbeans&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private void &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;txtnum1KeyReleased&lt;/span&gt;(java.awt.event.KeyEvent evt) {&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(102, 102, 102);"&gt;//Asignamos el texto del textBox a una variable Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; num1 = Integer.parseInt(&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;txtnum1&lt;/span&gt;.getText());&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(102, 102, 102);"&gt;//Si el otro TextBox no esta vacio, entonces se debe realizar la operación&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;       &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(!&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;txtnum2&lt;/span&gt;.getText().equals(&lt;span style="color: rgb(255, 153, 0);"&gt;""&lt;/span&gt;)){&lt;br /&gt;&lt;br /&gt;         &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; num2 = Integer.parseInt(&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;txtnum2&lt;/span&gt;.getText());&lt;br /&gt;&lt;br /&gt;         &lt;span style="color: rgb(102, 102, 102);"&gt;//Se realiza la operación, y se coloca en el TextBox del resultado&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;           &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;txtresultador&lt;/span&gt;.setText(String.valueOf(num2+num1));&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;La aplicación debe lucir así:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SeuTzML8J6I/AAAAAAAABfc/9SFC5C0N7MQ/s1600-h/framePanelSuma.jpg"&gt;&lt;img style="cursor: pointer; width: 244px; height: 218px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SeuTzML8J6I/AAAAAAAABfc/9SFC5C0N7MQ/s320/framePanelSuma.jpg" alt="" id="BLOGGER_PHOTO_ID_5326513491949660066" border="0" /&gt;&lt;/a&gt;    &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SeuTyyktJTI/AAAAAAAABfU/YAkBami1Qqk/s1600-h/framePanelResta.jpg"&gt;&lt;img style="cursor: pointer; width: 244px; height: 218px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SeuTyyktJTI/AAAAAAAABfU/YAkBami1Qqk/s320/framePanelResta.jpg" alt="" id="BLOGGER_PHOTO_ID_5326513485074212146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;El mismo JFrame con uno y otro JPanel&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Espero que les sea útil este código.&lt;br /&gt;&lt;br /&gt;Código alojado en el Aula Virtual de la UES-FMO, dentro del curso de Programación II.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SeuHetULRqI/AAAAAAAABe8/HIAymCPuq5k/s1600-h/jpanelResta.jpg"&gt; &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-7485149265512804365?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/7485149265512804365/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/04/agregar-jpanel-en-un-jframe-en-java-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7485149265512804365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7485149265512804365'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/04/agregar-jpanel-en-un-jframe-en-java-y.html' title='Agregar JPanel en un JFrame en Java y Netbeans'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_on8T2PWMfto/Set2_m3PemI/AAAAAAAABek/KeyzwCoMl14/s72-c/jframepadre.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-1769018039879285399</id><published>2009-04-05T10:41:00.000-07:00</published><updated>2009-04-05T12:27:59.734-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='certificados SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='JSP'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Keytool'/><category scheme='http://www.blogger.com/atom/ns#' term='JDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Emisión de certificados SSL con Apache Tomcat, Java, JSP y Netbeans</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/SdjvBKqoHKI/AAAAAAAABc0/H9eIVVh1ZhU/s1600-h/certificados_ssl3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 275px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/SdjvBKqoHKI/AAAAAAAABc0/H9eIVVh1ZhU/s320/certificados_ssl3.jpg" alt="" id="BLOGGER_PHOTO_ID_5321265763060292770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Un buen amigo mio necesitaba emitir certificados SSL (&lt;a href="http://es.wikipedia.org/wiki/Transport_Layer_Security"&gt;Secure Socket Layers&lt;/a&gt;) para la admisión de usuarios a sitios con protocolo http seguro (&lt;a href="http://es.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure"&gt;HTTPS&lt;/a&gt;) para un proyecto de una materia de la universidad. Como el novato que aun soy, empecé a leer al respecto y encontré una forma de hacerlo. Logré implementarla y traigo para Uds. este pequeño y sencillo tutorial para emitir este tipo de certificados utilizando Apache Tomcat, Java, JSP y Netbeans, todo sobre un sistema operativo Windows Vista.&lt;br /&gt;&lt;br /&gt;Las versiones que se tienen instaladas son:&lt;ul&gt;&lt;li&gt;JDK 1.6.0_05&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Netbeans 6.5&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Apache Tomcat 6.0.18&lt;/li&gt;&lt;/ul&gt;Ahora, para generar el certificado SSL utilizaremos la herramienta incluida en el Java Development Kit, &lt;a href="http://es.wikipedia.org/wiki/Java_Development_Kit"&gt;JDK&lt;/a&gt; llamada KeyTool. Para acceder a ella tenemos que acceder al directorio que contiene la versión del JDK. En Windows, es la siguiente ruta:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;%JAVA_HOME%\bin\keytool.exe  -genkey -alias tomcat -keyalg RSA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Con este comando y sus argumentos, estamos ordenando que generaremos un nuevo certificado o una nueva &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;key&lt;/span&gt;&lt;span style="font-family:arial;"&gt;, con el alias tomcat. Luego nos pedirá una serie de datos que son los que conformarán el almacén de claves. La clave que viene por defecto con el alias de tomcat es:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;changeit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Por el momento si estás aprendiendo conserva esta clave y así no tendrás problemas para crear más certificados. Cuando termines de ingresar toda la información digita OK para que se valide. Para mantener la misma clave (es decir changeit) solo debes de presionar Enter.&lt;br /&gt;&lt;br /&gt;Al finalizar este paso el KeyTool genera un archivo que almacena la lleva, es decir un .keystore. Es un poco problemático encontrar en donde lo guarda, sin embargo el keytool lo aloja siempre en la carpeta de usuario, en mi caso en Windows Vista se alojó en:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\Users\miNombreUsuario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En Windows XP sería:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\Documents and Settings\miNombreUsuario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En Ubuntu sería&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;/home/miNombreUsuario&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ahora debemos configurar el servidor Tomcat para aceptar y habilitar el puerto SSL, que por defecto es el 8443. Dentro de la carpeta del apache-tomcat-6.0.18 localizamos el archivo server.xml y descomentamos unas líneas que aparecen por defecto con carácter de comentarios y es el conector del puerto 8443. Le quitamos los comentarios unicamente y le agregamos un atributo para indicar cuál sera el keystore, de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;connector port="”8443″" protocol="”HTTP/1.1″" sslenabled="”true”" maxthreads="”150″" scheme="”https”" secure="”true”" clientauth="”false”" sslprotocol="”TLS”" keystorefile="”/Users/hugol/.keystore”/"&gt;Iniciamos ahora el servidor Tomcat de esta manera:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C:\Servidorapache-tomcat-6.0.18\bin\startup.bat&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Y ahora digitamos en el navegador https://localhost:8443/ y ya accederemos al index de localhost pero con protocolo http seguro, de esta manera:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/connector&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/Sdj9S5NgKNI/AAAAAAAABdE/yQRF8jMALfQ/s1600-h/tomcatSSL.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/Sdj9S5NgKNI/AAAAAAAABdE/yQRF8jMALfQ/s320/tomcatSSL.jpg" alt="" id="BLOGGER_PHOTO_ID_5321281460775168210" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Se añade la excepción en el certificado y ya se podrá ver como la imagen superior. Aprecien también en la barra de direcciones el protocolo del sitio (HTTPS) y en la barra de estado de Firefox vean que tiene un pequeño candado, denotando que es un sitio seguro.&lt;br /&gt;&lt;br /&gt;El tercer y último paso es crear una aplicación web con JSP y Netbeans, utilizando Tomcat como servidor de dicha aplicación. La creamos con Netbeans, y modificamos el archivo web.xml agregando estas etiquetas, todas dentro del cierre de la etiqueta &lt;web-app&gt;web-app. De esta manera:&lt;br /&gt;&lt;/web-app&gt;&lt;br /&gt;&lt;pre id="line557"&gt;&amp;lt;security-constraint&lt;span class="entity"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;web-resource-collection&amp;gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;web-resource-name&amp;gt;Entire Application&amp;lt;/web-resource-name&amp;gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;/web-resource-collection&amp;gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;transport-guarantee&amp;gt;CONFIDENTIAL&amp;lt;/transport-guarantee&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;/user-data-constraint&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line557"&gt;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:small;"&gt;&lt;/span&gt;&lt;web-app&gt;&lt;span style=";font-family:courier new;font-size:small;"  &gt;&lt;span style="font-family:arial;"&gt;Y es todo! Ahora este sitio se podrá ser accedido desde protocolo HTTPS. La prueba luciría así. Noten el protocolo en la barra de direcciones, así como el pequeño candado:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;connector port="”8443″" protocol="”HTTP/1.1″" sslenabled="”true”" maxthreads="”150″" scheme="”https”" secure="”true”" clientauth="”false”" sslprotocol="”TLS”" keystorefile="”/Users/hugol/.keystore”/"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SdjvBtZYJcI/AAAAAAAABc8/5P10RXeUvBI/s1600-h/pruebaSSL.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SdjvBtZYJcI/AAAAAAAABc8/5P10RXeUvBI/s320/pruebaSSL.jpg" alt="" id="BLOGGER_PHOTO_ID_5321265772383184322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Muchas gracias a &lt;a href="http://armandodiaz.wordpress.com/2009/03/14/java-netbeans-ssl-tomcat/"&gt;Armando Díaz&lt;/a&gt; y su Blog Ubuntu de El Salvador, ya que este tutorial está basado en su artículo.&lt;br /&gt;&lt;/connector&gt;&lt;/web-app&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-1769018039879285399?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/1769018039879285399/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/04/emision-de-certificados-ssl-con-apache.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/1769018039879285399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/1769018039879285399'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/04/emision-de-certificados-ssl-con-apache.html' title='Emisión de certificados SSL con Apache Tomcat, Java, JSP y Netbeans'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_on8T2PWMfto/SdjvBKqoHKI/AAAAAAAABc0/H9eIVVh1ZhU/s72-c/certificados_ssl3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-7552011138174587534</id><published>2009-04-02T21:31:00.001-07:00</published><updated>2009-04-02T22:18:38.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='JTextArea'/><category scheme='http://www.blogger.com/atom/ns#' term='JOptionPane'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Utilizando JTextArea y JOptionPane en Netbeans</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SdWRSb0ggPI/AAAAAAAABcU/EPRF9P-lYU8/s1600-h/intro_to_swing_4.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 303px; height: 301px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SdWRSb0ggPI/AAAAAAAABcU/EPRF9P-lYU8/s320/intro_to_swing_4.png" alt="" id="BLOGGER_PHOTO_ID_5320318280699773170" border="0" /&gt;&lt;/a&gt;JTextArea es un componente básico del Swing de Java y su función principal es la de capturar texto ingresado desde teclado por el usuario. Sin embargo, entre sus métodos está el de asignarle texto para mostrarlo además. Ahora explicaré un poco su uso con la ayuda de un pequeño ejemplo, el cual sería un pequeño bosquejo de un proyecto llamado &lt;span style="font-style: italic;"&gt;Librería&lt;/span&gt;, en el cual estará para este ejemplo unicamente la clase &lt;span style="font-style: italic;"&gt;Libro&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;La construiremos de esta manera: Unicamente con tres atributos básicos, un constructor que los inicialice con valores constantes, y con los respectivos &lt;span style="font-style: italic;"&gt;get &lt;/span&gt;y &lt;span style="font-style: italic;"&gt;set&lt;/span&gt; de cada atributo. El código de dicha clase quedaría de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;package&lt;/span&gt; libreriajtextarea;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;// @author Hugol&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; libro {&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;private&lt;/span&gt; String &lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;private &lt;/span&gt;String &lt;span style="color: rgb(51, 204, 0);"&gt;autor&lt;/span&gt;;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;private int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;numPags&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; libro(){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"Cómo Programar en C/C++"&lt;/span&gt;;&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;autor&lt;/span&gt;=&lt;span style="color: rgb(255, 153, 0);"&gt;"Joyanes Aguilar"&lt;/span&gt;;&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numPags&lt;/span&gt;=500;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; String &lt;span style="font-weight: bold;"&gt;getNombre&lt;/span&gt;(){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;setNombre&lt;/span&gt;(String n){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;nombre&lt;/span&gt;=n;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; String &lt;span style="font-weight: bold;"&gt;getAutor&lt;/span&gt;(){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;autor&lt;/span&gt;;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;setAutor&lt;/span&gt;(String a){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;autor&lt;/span&gt;=a;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public int&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;getNumPags&lt;/span&gt;(){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numPags&lt;/span&gt;;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;setNumPags&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; n){&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numPags&lt;/span&gt;=n;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ahora en la clase Main la implementaremos para que podamos utilizar, tanto los JTextArea como los JOptionPane en nuestra introducción al Swing. El código del Main es así:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; Main {&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;public static void&lt;/span&gt; main(String[] args) {&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//se crea un nuevo JTextArea&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;JTextArea salida = new JTextArea();&lt;br /&gt;     String cadSalida = &lt;span style="color: rgb(255, 204, 0);"&gt;""&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//se crea un nuevo libro&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;libro book = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; libro();&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se coloca texto al JTextArea&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;salida.setText(&lt;span style="color: rgb(255, 153, 0);"&gt;"El libro "&lt;/span&gt;+ book.getNombre()+ &lt;span style="color: rgb(255, 153, 0);"&gt;" tiene "&lt;/span&gt;+book.getNumPags()+ &lt;span style="color: rgb(255, 153, 0);"&gt;" paginas"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se muestra el texto en un JOptionPane&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;JOptionPane.showMessageDialog(&lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;, salida, &lt;span style="color: rgb(255, 153, 0);"&gt;"Libreria"&lt;/span&gt;, JOptionPane.&lt;span style="color: rgb(51, 204, 0);"&gt;INFORMATION_MESSAGE&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se limpia el JTextArea&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;salida.setText(&lt;span style="color: rgb(255, 153, 0);"&gt;""&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se le asigna un tamaño de ancho y alto al JTextArea&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;salida.setSize(50, 50);&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se le pide al usuario que escriba dentro del JTextArea en un JOptionPane&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;JOptionPane.showMessageDialog(&lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;, salida, &lt;span style="color: rgb(255, 153, 0);"&gt;"Escribe el Editorial del libro JTextArea"&lt;/span&gt;, JOptionPane.&lt;span style="color: rgb(51, 204, 0);"&gt;INFORMATION_MESSAGE&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se le asigna el texto escrito en el JTextArea a un String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;cadSalida = salida.getText();&lt;br /&gt;&lt;br /&gt;     &lt;span style="color: rgb(153, 153, 153);"&gt;//Se imprime el String en un JOptionPane, demostrando q el JTextArea se puede utilizar tanto para recibir información como para mostrarla&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;      &lt;/span&gt;JOptionPane.showMessageDialog(&lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;, &lt;span style="color: rgb(255, 153, 0);"&gt;"Editorial de libro: "&lt;/span&gt; + cadSalida, &lt;span style="color: rgb(255, 153, 0);"&gt;"Libreria"&lt;/span&gt;, JOptionPane.&lt;span style="color: rgb(51, 204, 0);"&gt;INFORMATION_MESSAGE&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Cabe mencionar que ya la clase JOptionPane proporciona un método de entrada de datos, el ya conocido &lt;span style="font-style: italic;"&gt;showInputDialog()&lt;/span&gt;, sin embargo para fines didácticos se agrega un JTextArea para el ingreso de datos. La aplicación luce así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SdWZDFKyJrI/AAAAAAAABcc/m_pJz8yOOHA/s1600-h/JOptionPane.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 367px; height: 115px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SdWZDFKyJrI/AAAAAAAABcc/m_pJz8yOOHA/s400/JOptionPane.jpg" alt="" id="BLOGGER_PHOTO_ID_5320326813014173362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Se muestra el JTextArea dentro JOptionPane.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SdWZDNt5fCI/AAAAAAAABcs/zMKADa-3wFc/s1600-h/JOptionPane_JTextArea.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 266px; height: 115px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SdWZDNt5fCI/AAAAAAAABcs/zMKADa-3wFc/s400/JOptionPane_JTextArea.jpg" alt="" id="BLOGGER_PHOTO_ID_5320326815308938274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;El usuario digita dentro del JTextArea la editorial del libro.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SdWZDJaGo6I/AAAAAAAABck/UMXph4d6cV4/s1600-h/JOptionPane2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 267px; height: 115px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SdWZDJaGo6I/AAAAAAAABck/UMXph4d6cV4/s400/JOptionPane2.jpg" alt="" id="BLOGGER_PHOTO_ID_5320326814152172450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Se muestra la respuesta.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-7552011138174587534?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/7552011138174587534/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/04/utilizando-jtextarea-y-joptionpane-en.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7552011138174587534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/7552011138174587534'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/04/utilizando-jtextarea-y-joptionpane-en.html' title='Utilizando JTextArea y JOptionPane en Netbeans'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_on8T2PWMfto/SdWRSb0ggPI/AAAAAAAABcU/EPRF9P-lYU8/s72-c/intro_to_swing_4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-5320945441147601962</id><published>2009-03-30T11:31:00.000-07:00</published><updated>2009-03-30T13:14:38.989-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejercicios'/><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='JFrame'/><category scheme='http://www.blogger.com/atom/ns#' term='JTextArea'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejemplos'/><category scheme='http://www.blogger.com/atom/ns#' term='JOptionPane'/><title type='text'>Ejemplos creando JFrame y JOptionPane</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_on8T2PWMfto/SdEdT3NZa1I/AAAAAAAABb8/jdg6uTV8u1s/s1600-h/0596004087.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 243px; height: 320px;" src="http://4.bp.blogspot.com/_on8T2PWMfto/SdEdT3NZa1I/AAAAAAAABb8/jdg6uTV8u1s/s320/0596004087.jpg" alt="" id="BLOGGER_PHOTO_ID_5319064861976128338" border="0" /&gt;&lt;/a&gt;Es muy útil que nos vayamos introduciendo al mundo del ambiente gráfico en Java. Para ello hoy en día se utiliza el popular paquete de &lt;span style="font-weight: bold;"&gt;javax.swing&lt;/span&gt;. Las librerías swing nos aportan una serie de componentes y contenedores para realizar aplicaciones de escritorio.&lt;br /&gt;&lt;br /&gt;Como ya en varios ejercicios  se ha estado utilizando la famosa clase estática &lt;span style="font-weight: bold;"&gt;JOptionPane&lt;/span&gt;, ahora veremos las diferencias y cómo instanciar un nuevo formulario, que en el Swing es llamado JFrame. Así podremos ver las diferencias y podemos aprender a crear nuestros primeros formularios en Java.&lt;br /&gt;&lt;br /&gt;Lo haremos utilizando el ejercicio que se usó en un parcial. Que se calcularan los factoriales de los números impares menores que 2 y se mostraran al usuario. Se hará de dos formas: con un JOptionPane y con un JFrame.&lt;br /&gt;&lt;br /&gt;Antes que nada creamos la clase factorial que nos devolverá el factorial del número que se le ingrese:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;package&lt;/span&gt; factoriales21;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;/**&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; *&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; * @author Hugol&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;factorial&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private int&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;numero&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;private double&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;resultado&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;//Constructor&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;factorial&lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; num){&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numero&lt;/span&gt;=num;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;resultado&lt;/span&gt;=1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;//Devuelve el factorial&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public double&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;devolverFactorial&lt;/span&gt;(){&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;for &lt;/span&gt;(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; i=1; i&lt;=&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;numero&lt;/span&gt;;i++){&lt;br /&gt;      &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;resultado&lt;/span&gt;*=i;&lt;br /&gt;  }&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.&lt;span style="color: rgb(51, 204, 0);"&gt;resultado&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora, dentro de la clase &lt;span style="font-weight: bold;"&gt;Main &lt;/span&gt;instanciaremos nuestro JFrame y el JOptionPane, para que muestre los factoriales debidos. Se hace de esta manera. Note que el código está debidamente documentado:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;package&lt;/span&gt; factoriales21;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;import&lt;/span&gt; javax.swing.JFrame;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;import &lt;/span&gt;javax.swing.JOptionPane;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;import&lt;/span&gt; javax.swing.JTextArea;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;/**&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; *&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; * @author Hugol&lt;/span&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Main&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public static void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;main&lt;/span&gt;(String[] args) {&lt;br /&gt;&lt;br /&gt;  //Creamos un nuevo JTextArea&lt;br /&gt;  JTextArea area = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; JTextArea();&lt;br /&gt;&lt;br /&gt;   //Instanciamos un nuvo JFrame, pasándole como argumento, el título&lt;br /&gt;  JFrame form = &lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; JFrame("Este es un JFrame");&lt;br /&gt;&lt;br /&gt;   //Variable para almacenar la salida en pantalla&lt;br /&gt;  String salida = &lt;span style="color: rgb(255, 204, 102);"&gt;"Los factoriales de los numeros impares menores que 21 son:\n"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;for&lt;/span&gt; (&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; i=1;i&lt;=21;i++){             &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;if&lt;/span&gt;(i%2 != 0){&lt;br /&gt;         factorial obj=&lt;span style="color: rgb(51, 51, 255);"&gt;new&lt;/span&gt; factorial(i);&lt;br /&gt;         salida = salida + String.valueOf(obj.devolverFactorial()) +", ";&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; //La salida en pantalla se la asignamos como texto al JTextArea&lt;/span&gt; &lt;br /&gt;  area.setText(salida);&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(153, 153, 153);"&gt;//Llamamos un nuevo JOptionPane&lt;/span&gt;&lt;br /&gt;  JOptionPane.showMessageDialog(&lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;, area, &lt;span style="color: rgb(255, 204, 51);"&gt;"Este es un JOptionPane"&lt;/span&gt;, JOptionPane.&lt;span style="color: rgb(51, 204, 0);"&gt;INFORMATION_MESSAGE&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(153, 153, 153);"&gt;//Con esta sentencia declaramos que cuando se cierre el JFrame la aplicación se cierra también&lt;/span&gt;                    form.setDefaultCloseOperation(javax.swing.WindowConstants.&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;br /&gt;EXIT_ON_CLOSE&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(153, 153, 153);"&gt;//Añadimos el componente JTextArea al JFrame&lt;/span&gt;&lt;br /&gt;  form.add(area);&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(153, 153, 153);"&gt;//Le asignamos como posición del JFrame, el centro de la pantalla&lt;/span&gt;&lt;br /&gt;  form.setLocationRelativeTo(&lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(153, 153, 153);"&gt; //Con esta sentencia, le asignamos el tamaño de lo que contiene al JFrame&lt;/span&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;  &lt;/span&gt;&lt;br /&gt;  form.pack();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(153, 153, 153);"&gt;//Colocamos visible al usuario el formulario&lt;/span&gt;&lt;br /&gt;  form.setVisible(&lt;span style="color: rgb(51, 51, 255);"&gt;true&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Y ahi tenemos la aplicación. Se tiene que ver muy parecido a esto:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SdElpShFsHI/AAAAAAAABcE/qQ7CCNAdCeQ/s1600-h/Pantallazo1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SdElpShFsHI/AAAAAAAABcE/qQ7CCNAdCeQ/s320/Pantallazo1.png" alt="" id="BLOGGER_PHOTO_ID_5319074026176753778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/SdElp4tfPcI/AAAAAAAABcM/bjLoCsugbnA/s1600-h/Pantallazo2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/SdElp4tfPcI/AAAAAAAABcM/bjLoCsugbnA/s320/Pantallazo2.png" alt="" id="BLOGGER_PHOTO_ID_5319074036429307330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-5320945441147601962?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/5320945441147601962/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/ejemplos-creando-jframe-y-joptionpane.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5320945441147601962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/5320945441147601962'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/ejemplos-creando-jframe-y-joptionpane.html' title='Ejemplos creando JFrame y JOptionPane'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_on8T2PWMfto/SdEdT3NZa1I/AAAAAAAABb8/jdg6uTV8u1s/s72-c/0596004087.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-406875113933692349</id><published>2009-03-27T22:43:00.000-07:00</published><updated>2009-03-27T23:20:04.091-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ejercicios'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Resoluciones de ejercicios de Primeros Parciales Programación II</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Sc3ArR06e1I/AAAAAAAABb0/y3-kI6cnggA/s1600-h/la-pasta-o-la-vida.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 266px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Sc3ArR06e1I/AAAAAAAABb0/y3-kI6cnggA/s320/la-pasta-o-la-vida.jpg" alt="" id="BLOGGER_PHOTO_ID_5318118584746670930" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Para que no nos suceda esto, practiquemos más...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Buenas!&lt;br /&gt;&lt;br /&gt;Luego de los resultados del primer parcial en todos los grupos teóricos, hemos decidido entre los encargados de impartir la cátedra, que haremos un pequeño refuerzo a todos los estudiantes para lograr nivelar los conocimientos de todos en miras hacia los siguientes parciales y evaluaciones de laboratorio.&lt;br /&gt;&lt;br /&gt;Es por esto que la semana previa a vacaciones resolveremos los ejercicios evaluados en este pasado parcial. Aunque algunos de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Uds&lt;/span&gt;. ya los resolvieron, añado mis soluciones en el siguiente &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;link&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/download.php?5u0mwzo2ldg"&gt;http://www.mediafire.com/download.php?5u0mwzo2ldg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;El presente archivo en formato &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;RAR&lt;/span&gt; consta de las siguientes soluciones:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dibujar un histograma a partir de un vector de enteros.&lt;/li&gt;&lt;li&gt;Descomponer una cantidad de dinero en el número mínimo de billetes que se puede tener.&lt;/li&gt;&lt;li&gt;Encontrar el mayor y el menor de 4 números ingresados por el usuario con la ayuda de la clase &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Math&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Obtener el factorial de los números impares menores de 21 y mostrarlos en un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;JTextArea&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;Al descargar el &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RAR&lt;/span&gt; conseguirá los proyectos en &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Netbeans&lt;/span&gt; de cada uno de esos problemas.&lt;br /&gt;&lt;br /&gt;Cualquier duda o sugerencia hacérmela llegar a mi correo o por comentario a esta entrada.&lt;br /&gt;&lt;br /&gt;Mi correo es: hugol.barrientos@gmail.com&lt;br /&gt;&lt;br /&gt;Saludos y suerte en las evaluaciones venideras&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-406875113933692349?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/406875113933692349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/resoluciones-de-ejercicios-de-primeros.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/406875113933692349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/406875113933692349'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/resoluciones-de-ejercicios-de-primeros.html' title='Resoluciones de ejercicios de Primeros Parciales Programación II'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_on8T2PWMfto/Sc3ArR06e1I/AAAAAAAABb0/y3-kI6cnggA/s72-c/la-pasta-o-la-vida.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-4621324975058791407</id><published>2009-03-23T21:22:00.001-07:00</published><updated>2009-03-23T22:49:59.975-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Herencia Múltiple'/><category scheme='http://www.blogger.com/atom/ns#' term='Herencia'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Herencia Múltiple en Java, ¿Conveniente o no?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_on8T2PWMfto/SchjHyTLIgI/AAAAAAAABbk/OupVGxDUTS0/s1600-h/herencia.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 278px; height: 194px;" src="http://1.bp.blogspot.com/_on8T2PWMfto/SchjHyTLIgI/AAAAAAAABbk/OupVGxDUTS0/s320/herencia.png" alt="" id="BLOGGER_PHOTO_ID_5316608345523298818" border="0" /&gt;&lt;/a&gt;Todos sabemos que la herencia es un mecanismo propio de la programación orientada a objetos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;POO&lt;/span&gt;. Nos permite crear clases a partir de otra, las cuales las unen vínculos sumamente estrechos, casi de familia. Es por ello que se llama herencia.&lt;br /&gt;&lt;br /&gt;Si buscamos modelar nuestras clases u objetos como propios de la realidad, todos los conceptos de la orientación a objetos nos serán muy fácil de implementar mientras &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;programamos&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Implementando herencia tenemos las siguientes ventajas:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modelado de la realidad&lt;/li&gt;&lt;li&gt;Evitar redundancias en el código&lt;/li&gt;&lt;li&gt;Facilita la reutilización del código, así como reduce el número de líneas a escribir&lt;/li&gt;&lt;li&gt;Sirve como el soporte o la base para el polimorfismo&lt;/li&gt;&lt;/ul&gt;Es muy &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;sencilo&lt;/span&gt; implementar la herencia de clases en Java. Basándonos en el diagrama de arriba, si queremos crear la clase &lt;span style="font-weight: bold;"&gt;gallina&lt;/span&gt; solo debemos de interponer la palabra reservada &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;extends&lt;/span&gt;&lt;/span&gt;. Por lo tanto la declaración de la clase quedaría &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;constituida&lt;/span&gt; de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Gallina&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;extends&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Ave&lt;/span&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ahora podemos tener dentro de gallina, todos los atributos y métodos propios de una Ave.&lt;br /&gt;&lt;br /&gt;Esta forma de herencia es llamada herencia simple, ya que solamente hay una clase padre o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;superclase&lt;/span&gt;. Existe una forma de herencia definida dentro de los conceptos de la programación orientada a objetos en la cual una clase puede heredar de dos o más clases padres o &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;superclases&lt;/span&gt;. Se llama Herencia Múltiple.&lt;br /&gt;&lt;br /&gt;La herencia múltiple en java no es soportada &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;nativamente&lt;/span&gt;. Sin embargo muchos autores y desarrolladores la simulan utilizando la palabra reservada &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;implements&lt;/span&gt;&lt;/span&gt; e interfaces, que sirve para implementar o cubrir una clase con respecto a otra.&lt;br /&gt;&lt;br /&gt;Supongamos el siguiente escenario:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Scht9ybtosI/AAAAAAAABbs/GkqI08GKpI8/s1600-h/herenciaMultiple.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 233px; height: 162px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Scht9ybtosI/AAAAAAAABbs/GkqI08GKpI8/s320/herenciaMultiple.png" alt="" id="BLOGGER_PHOTO_ID_5316620268388328130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Un alumno de la cátedra de Programación &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;II&lt;/span&gt; además que es una persona consagrada, también es un hijo de familia que debe responder con buenas notas en su travesía por la universidad. Es decir que una clase alumno debería de heredar de ambos objetos. Hacer este pequeño diagrama &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;UML&lt;/span&gt; en código Java no se puede &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;nativamente&lt;/span&gt; hablando, solamente con una &lt;span style="font-weight: bold;"&gt;simulación. &lt;/span&gt;La manera de realizarla es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Persona&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Hijo&lt;/span&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;interface&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;iHijo&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;     //La &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;interface&lt;/span&gt; pertenece a la clase Hijo&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;public&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;class&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Alumno&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;extends&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Persona&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;implements&lt;/span&gt;&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;iHijo&lt;/span&gt;&lt;/span&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Con la ayuda de las interfaces simulamos la herencia múltiple. Una &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;interface&lt;/span&gt; no es más que la implementación de los métodos de una clase. Con la ayuda de éstos podemos &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;accesar&lt;/span&gt; a los métodos de la clase Hijo y heredar directamente todo lo que pertenece a Persona. Fácil, pero a la vez confuso, ¿No?&lt;br /&gt;&lt;br /&gt;Conclusión: &lt;span style="font-weight: bold;"&gt;¿Se debe utilizar la herencia múltiple?&lt;/span&gt; A mi forma de pensar, si no está implementada &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;nativamente&lt;/span&gt;, se debería de evitar el uso de una simulación que va en contra de la naturaleza del lenguaje. Además pienso que todo problema que o esquema de clases se pueden llegar a plantear de forma que solamente utilicemos la herencia simple, ya que es más sencilla y es más natural que se herede de un solo padre.&lt;br /&gt;&lt;br /&gt;Como ejercicio al lector, le pido que plantee el esquema de clases para el ejemplo utilizado en la simulación de la herencia múltiple. ¿Cómo lo plantearía con herencia simple?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-4621324975058791407?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/4621324975058791407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/herencia-multiple-en-java-conveniente-o.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/4621324975058791407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/4621324975058791407'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/herencia-multiple-en-java-conveniente-o.html' title='Herencia Múltiple en Java, ¿Conveniente o no?'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_on8T2PWMfto/SchjHyTLIgI/AAAAAAAABbk/OupVGxDUTS0/s72-c/herencia.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-8027410655931946790</id><published>2009-03-21T00:10:00.000-07:00</published><updated>2009-03-23T10:47:36.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='POO'/><category scheme='http://www.blogger.com/atom/ns#' term='Clases'/><title type='text'>Clases, métodos, herencia, constructores y POO</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Guía de Laboratorio 2: Métodos, Constructores y Herencia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta guía de práctica es una continuación de la número 1 en donde se realizó un programa básico en modo consola, llamado cariñosamente “Silabario para programadores principiantes”. Ahora, lo diseñaremos en base a clases bien encapsuladas, que contengan sus métodos y propiedades, getters y setters, además de la implementación de la herencia simple, la única soportada nativamente en Java.&lt;br /&gt;&lt;br /&gt;Además, como un refuerzo se explicará la función super(), propia de nuestro lenguaje de programación.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SUPER()&lt;/span&gt;&lt;br /&gt;Si se necesita llamar al método padre dentro de una clase que ha reemplazado ese método, se puede hacer referencia al método padre con la palabra clave super().&lt;br /&gt;&lt;br /&gt;Cuando se declara una clase heredando explícitamente de otra como en el código siguiente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;class&lt;/span&gt; base {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; datoBase;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; base() {&lt;br /&gt;System.out.println( "Dentro del Constructor de la clase base" );&lt;br /&gt;System.out.println( "Asignando a datoBase 100" );&lt;br /&gt;datoBase = 100;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;class&lt;/span&gt; hijoBase &lt;span style="color: rgb(51, 51, 255);"&gt;extends&lt;/span&gt; base {&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; datoSubClase;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;// Constructor de la Subclase&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public&lt;/span&gt; hijoBase() {&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;// Llamada al constructor de la clase base&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;super&lt;/span&gt;();&lt;br /&gt;System.out.println( "Dentro del Constructor de la subclase" );&lt;br /&gt;System.out.println( "Asignando a datoSubClase 200" );&lt;br /&gt;datoSubClase = 200;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;El programa también utiliza super para invocar al constructor de la superclase desde el constructor de la subclase.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PREGUNTA: Si instanciamos la clase hijoBase, ¿Cuál es la impresión en consola de la porción de código de arriba?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;También sirve para llegar a atributos de las superclases. De la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;class&lt;/span&gt; ave{&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;String&lt;/span&gt; nombre;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;String&lt;/span&gt; colorPlumas;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;class&lt;/span&gt; pato &lt;span style="color: rgb(51, 51, 255);"&gt;extends &lt;/span&gt;ave{&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;pato(){&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;super&lt;/span&gt;.colorPlumas=”Blanco”;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Instanciando la clase pato podemos acceder a la propiedad colorPlumas, que está definida como propiedad de un ave.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pregunta: ¿Existe la herencia múltiple en Java? ¿Por qué?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta guía se encargará de fortalecer los conceptos de clases, métodos, propiedades o atributos, herencia, constructores y acerca de los métodos Get y Set. Todo esto con ayuda del programa realizado en la guía anterior con nuestro “Silabario para programadores”. El trabajo estructurado de la semana pasada ahora lo traslademos a una aplicación, siempre en el ambiente consola, en la cual definamos con un alto grado de encapsulamiento, las clases que harán posible la realización de la aplicación y llevarán definida todo el funcionamiento, o lo que es mismo, la &lt;span style="font-weight: bold;"&gt;capa de negocios &lt;/span&gt;del programa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El ejemplo es sencillo. El Silabario lo que realiza es una serie de operaciones básicas que resuelven 4 tipos de problemas distintos: El factorial de número, la tabla de multiplicar de un número, la clasificación de la edad del usuario y la elección de la estación del año favorita del usuario. El silabario además, tiene la característica que el programador escogerá la sentencia o instrucción básica que brinde la solución más sencilla y óptima para cada uno de los problemas.&lt;br /&gt;&lt;br /&gt;Para efectos de esta práctica, y porque creo que es la mejor manera de poder apreciar las clases y objetos de este ejercicio, definiremos cada clase como una clase “Operación”, que es la que facilitará y tendrá las herramientas necesarias para efectuar la resolución de cada uno de los problemas.&lt;br /&gt;&lt;br /&gt;Un objeto operación necesita de propiedades o atributos. Una operación necesita de operadores, uno, dos ó más. Es por eso que definiremos dos atributos para realizar dichas operaciones. Con dos bastarán para este ejercicio.&lt;br /&gt;Los métodos de esta clase son muy variados. Cada una de las operaciones realizará uno diferente, por lo tanto no cabe dentro de la percepción de un objeto “Operación” básico, la definición de cada uno de los métodos.&lt;br /&gt;Los métodos que sí se necesitarían son los populares métodos GET y SET, que nos sirven para leer y cambiar los valores de una propiedad específica. Como hemos definido propiedades, éstas necesitan de sus getters y setters. La clase de una Operación Básica para el silabario quedará así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; operacionBase {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;protected int&lt;/span&gt; operador;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;/span&gt;operacionBase(){&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;this&lt;/span&gt;.operador=0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public void&lt;/span&gt; setOperador(&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; o){&lt;br /&gt;this.operador=o;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getOperador(){&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;return this&lt;/span&gt;.operador;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Declaramos la propiedad con visibilidad &lt;span style="font-style: italic;"&gt;protected&lt;/span&gt; por motivos de seguridad, para que solamente los miembros de esa clase y los que heredan de ella, es decir las subclases, puedan accesar a estos atributos.&lt;br /&gt;&lt;br /&gt;Como hemos definido ya una clase base, ahora podremos definir el resto de clases que podrán heredar de la clase base. Cabe destacar que no siempre se podrá hacer una clase base y con respecto a esta empezar a heredarles a otras. Esto depende de la naturaleza de cada aplicación, y de la manera de cómo el programador diseñe su &lt;span style="font-weight: bold;"&gt;capa de negocios&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para realizar la clase que nos devuelva el factorial de un número, el programador puede escoger la instrucción While. Por lo tanto el programador debe desarrollar el método que reciba como parámetro el número del que se desee el factorial y que devuelva el resultado esperado. Heredando de la clase base, tenemos ya garantizados los atributos y métodos propios de la misma, por lo tanto, la clase para realizar el factorial del número podría quedar así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class &lt;/span&gt;operacionFactorial &lt;span style="color: rgb(51, 51, 255);"&gt;extends&lt;/span&gt; operacionBase{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public &lt;span style="color: rgb(0, 0, 0);"&gt;operacionFactorial&lt;/span&gt;&lt;/span&gt;(){&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;super&lt;/span&gt;();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public int &lt;/span&gt;devolverFactorial(){&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factorial=1;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; cont=1;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;while &lt;/span&gt;(cont &lt;= this.operador) {      factorial *= cont;      cont++;  }      &lt;span style="color: rgb(51, 51, 255);"&gt;return &lt;/span&gt;factorial;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;El diagrama UML nos ayudará a comprender mejor la herencia y estructura de estas clases:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_on8T2PWMfto/ScSWWmRBjfI/AAAAAAAABbc/NLLDylmWe9I/s1600-h/herenciaOperaciones.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 237px; height: 314px;" src="http://2.bp.blogspot.com/_on8T2PWMfto/ScSWWmRBjfI/AAAAAAAABbc/NLLDylmWe9I/s320/herenciaOperaciones.png" alt="" id="BLOGGER_PHOTO_ID_5315538775177268722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Como puede observar el programador, se utiliza la propiedad “operador” cuya definición pertenece a la clase base. Sin embargo, como la clase “operacionFactorial” hereda todos los atributos y métodos de la clase básica, podemos hacer un llamado a dicha propiedad con la ayuda de la sentencia “this”.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PREGUNTAS: ¿Trabajaría igual el constructor si se suprime la sentencia super()? ¿Cómo capturo las variables que el usuario ingresa y se las transmito a la función devolverFactorial()?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejercicio:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Realizar la siguiente aplicación utilizando clases, herencia, métodos, propiedades, constructores y los métodos GET y SET:&lt;br /&gt;&lt;br /&gt;• Desarrollar un ecosistema, en donde se puedan crear tener distintos animales de todas las clasificaciones: mamíferos, aves, reptiles y anfibios.&lt;br /&gt;•    Se deben de crear clases para cada tipo de especie, y para las especies más comunes que el programador quiera definir.&lt;br /&gt;• El usuario final debe tener la potestad de crear todos los animales (instancias) que desee, y diferenciarlas de acuerdo a algún identificador. Se deben de poder plasmar en la consola la lista de animalitos creados&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ejercicios propuestos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Desarrollar un programa en Java con todos los elementos vistos en este laboratorio que maneje las disciplinas deportivas que se practican en unos juegos olímpicos, con la misma dinámica del ejercicio anterior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-8027410655931946790?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/8027410655931946790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/clases-metodos-herencia-constructores-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/8027410655931946790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/8027410655931946790'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/clases-metodos-herencia-constructores-y.html' title='Clases, métodos, herencia, constructores y POO'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_on8T2PWMfto/ScSWWmRBjfI/AAAAAAAABbc/NLLDylmWe9I/s72-c/herenciaOperaciones.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-2671860912240169358</id><published>2009-03-20T18:06:00.000-07:00</published><updated>2009-03-21T00:24:35.855-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Deitel y Deitel'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Programa para manejar las instrucciones básicas en JAVA</title><content type='html'>Este programa es funciona como un "Silabario para programadores principiantes" en Java. Así será llamado cariñosamente este ejercicio. Lo que se busca es que el programador utilice la instrucción más adecuada para resolver 4 problemas distintos:&lt;br /&gt;&lt;br /&gt;* Factorial de un número&lt;br /&gt;* Tabla de multiplicar de un número&lt;br /&gt;* Clasificar la edad del usuario&lt;br /&gt;* Escoger la estación del año favorita del usuario y se muestre un mensaje alusivo.&lt;br /&gt;&lt;br /&gt;Así, cada programador logrará discernir sobré cuá instrucción le sirve para resolver cada problema específico.&lt;br /&gt;&lt;br /&gt;Este es mi programa para este enunciado. He escogido resolver cada uno de esos problemas con una instrucción distinta. Es claro que pueden haber muchas más soluciones, cada una diferente y correcta. Espero que les sirva:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;package&lt;/span&gt; basico;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import&lt;/span&gt; java.io.BufferedReader;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import&lt;/span&gt; java.io.IOException;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import &lt;/span&gt;java.io.InputStreamReader;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;* @author Hugol&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public class&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Main&lt;/span&gt; {&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;public static void&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;main&lt;/span&gt;(String[] args) {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BufferedReader in = new BufferedReader(new InputStreamReader(System.in));&lt;br /&gt;&lt;br /&gt;String s = &lt;span style="color: rgb(51, 51, 255);"&gt;null&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt; car= ' ';&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; opcion = 10, op=0;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;do&lt;/span&gt;{&lt;br /&gt;System.out.println("Programa que nos muestra las sentencias básicas dentro de Java");&lt;br /&gt;System.out.println("Elija una Opción:\n 1. Sentencia If-Else\n 2. Sentencia While\n 3. Sentencia Do-While\n 4. Sentencia For\n 5. Sentencia Switch\n 0. Salir");&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt;{&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt; {&lt;br /&gt;s = in.readLine();&lt;br /&gt;opcion = Integer.parseInt(s);&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;switch&lt;/span&gt; (opcion){&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 0:&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 1:&lt;br /&gt;             System.out.println("Ingresa una edad: ");&lt;br /&gt;             s = in.readLine();&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; edad = Integer.parseInt(s);&lt;br /&gt;            &lt;br /&gt;            String mensaje="";&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;if&lt;/span&gt; (edad&lt;=18)                         mensaje="Estas joven aún";                    &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                        if &lt;/span&gt;(edad&lt;=30)                        mensaje="Eres un adulto";                    &lt;span style="color: rgb(51, 51, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                mensaje="Estás para el tigre";&lt;br /&gt;&lt;br /&gt;            System.out.println(mensaje);&lt;br /&gt;&lt;br /&gt;            s = in.readLine(); &lt;span style="color: rgb(153, 153, 153);"&gt;//Engaño al compilador y detengo la ejecución esperando que el usuario ingrese una tecla para observar la respuesta&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;case &lt;/span&gt;2:&lt;br /&gt;             System.out.println("Factorial de un Número con While. Ingrese un número: ");&lt;br /&gt;             s = in.readLine();&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factor = Integer.parseInt(s);&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factorial=1;&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;cont=1;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;while&lt;/span&gt; (cont &lt;= factor)     {                                factorial *= cont;                                cont++;  }       System.out.println("El Factorial de "+factor+" es "+factorial);                          s = in.readLine(); &lt;span style="color: rgb(153, 153, 153);"&gt;//Engaño al compilador y detengo la ejecución esperando que el usuario ingrese una tecla para observar la respuesta                    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 3:&lt;br /&gt;             System.out.println("Factorial de un Número con Do-While. Ingrese un número: ");&lt;br /&gt;             s = in.readLine();&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factor2 = Integer.parseInt(s);&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factorial2=1;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; cont2=0;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(51, 51, 255);"&gt;do&lt;/span&gt;{&lt;br /&gt;                    cont2++;&lt;br /&gt;                    factorial2*=cont2;&lt;br /&gt;&lt;br /&gt;             }&lt;span style="color: rgb(51, 51, 255);"&gt;while&lt;/span&gt;(cont2&lt;factor2);&gt; &lt; =  factor2);       s = in.readLine();  &lt;/factor2);&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;//Engaño al compilador y detengo la ejecución esperando que el usuario ingrese una tecla para observar la respuesta&lt;/span&gt;&lt;br /&gt;&lt;factor2);&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;break;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 4:&lt;br /&gt;System.out.println("Ingrese un número para generar su tabla de multiplicar: ");&lt;br /&gt;s = in.readLine();&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; multiplo = Integer.parseInt(s);&lt;br /&gt;&lt;br /&gt;             String tabla="";&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;parcial=0;&lt;br /&gt;&lt;br /&gt;             &lt;span style="color: rgb(51, 51, 255);"&gt;for &lt;/span&gt;(int i=1; i&lt;=10; i++){&lt;/factor2);&gt;&lt;br /&gt;&lt;factor2);&gt;                                  parcial = i*multiplo;                                  &lt;/factor2);&gt;&lt;br /&gt;&lt;factor2);&gt; tabla += i + " x " + multiplo + " = " + parcial +"\n";&lt;/factor2);&gt;&lt;br /&gt;&lt;factor2);&gt;                          }       &lt;/factor2);&gt;&lt;br /&gt;&lt;br /&gt;&lt;factor2);&gt;System.out.println(tabla);&lt;/factor2);&gt;&lt;br /&gt;&lt;factor2);&gt;                           s = in.readLine(); &lt;/factor2);&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;//Engaño al compilador y detengo la ejecución esperando que el usuario ingrese una tecla para observar la respuesta&lt;/span&gt;&lt;factor2);&gt;           &lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 5:&lt;br /&gt;              System.out.println("¿Qué estación del año prefieres? Ingresa una opción:\n p. Primavera\n v. Verano\n o. Otoño\n i. Invierno\n ");&lt;br /&gt;              s = in.readLine();&lt;br /&gt;&lt;br /&gt;              &lt;span style="color: rgb(51, 51, 255);"&gt;if &lt;/span&gt;(s.length()==1)&lt;br /&gt;                      car=s.charAt(0);&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;else&lt;/span&gt;&lt;br /&gt;                      car='e';&lt;br /&gt;&lt;br /&gt;String mens=" ";&lt;br /&gt;&lt;br /&gt;              &lt;span style="color: rgb(51, 51, 255);"&gt;switch&lt;/span&gt;(car){&lt;br /&gt;&lt;br /&gt;              &lt;span style="color: rgb(51, 51, 255);"&gt;case&lt;/span&gt; 'p': mens="SPRING BREAK";&lt;br /&gt;              &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;      case&lt;/span&gt; 'v': mens="SUMMER VACATIONS";&lt;br /&gt;                                &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;case&lt;/span&gt; 'o': mens="RED LEAVES";&lt;br /&gt;                               &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;case &lt;/span&gt;'i': mens="WHITE SNOW";&lt;br /&gt;                               &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;       &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;default&lt;/span&gt;: mens="¿Tecla incorrecta?";&lt;br /&gt;                                 &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;             }&lt;br /&gt;&lt;br /&gt;              System.out.println(mens);&lt;br /&gt;              s = in.readLine(); &lt;/factor2);&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;//Engaño al compilador y detengo la ejecución esperando que el usuario ingrese una tecla para observar la respuesta&lt;/span&gt;&lt;br /&gt;&lt;factor2);&gt;                      &lt;span style="color: rgb(51, 51, 255);"&gt;break;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;                      default&lt;/span&gt;: System.out.println("Opción inválida");&lt;br /&gt;                            &lt;span style="color: rgb(51, 51, 255);"&gt;break&lt;/span&gt;;&lt;br /&gt;   }&lt;br /&gt;}    &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN TRY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;catch &lt;/span&gt;(NumberFormatException e) {&lt;br /&gt;   System.out.println("Opción inválida");&lt;br /&gt;   s = in.readLine();&lt;br /&gt;}     &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN CATCH&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;        &lt;/span&gt;}      &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN TRY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;catch&lt;/span&gt;(IOException ex){&lt;br /&gt;System.out.println("Error de entrada de datos");&lt;br /&gt;}     &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN CATCH&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}&lt;span style="color: rgb(51, 51, 255);"&gt;while &lt;/span&gt;(opcion!=0 );&lt;br /&gt;&lt;br /&gt;}      &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN MAIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;}      &lt;span style="color: rgb(153, 153, 153);"&gt;//FIN CLASS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;El proyecto en Netbeans de dicho código lo encontrarán bajo esta dirección:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://www.megaupload.com/?d=I72K0LLN"&gt;http://www.megaupload.com/?d=I72K0LLN&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;El libro de Java, Cómo Programar de Deitel y Deitel en su Quinta Edición lo pueden descargar desde este link:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rs180.rapidshare.com/files/53060913/Como52157486.rar"&gt;http://rs180.rapidshare.com/files/53060913/Como52157486.rar&lt;/a&gt;. Pesa 100 Mb&lt;br /&gt;&lt;br /&gt;Recuerden que es la Quinta edición. Si tiene la posibilidad de adquirir la Séptima, no lo duden en hacerlo.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/factor2);&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-2671860912240169358?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/2671860912240169358/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/programa-para-manejar-las-instrucciones.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/2671860912240169358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/2671860912240169358'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/programa-para-manejar-las-instrucciones.html' title='Programa para manejar las instrucciones básicas en JAVA'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-4700731588897359573</id><published>2009-03-16T21:48:00.000-07:00</published><updated>2009-03-16T22:15:51.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Jar'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='JDK'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Cambiar la versión de JDK para ejecutar archivos JAR en Debian Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_on8T2PWMfto/Sb8soCapSYI/AAAAAAAABbU/0q1z_9kqgZQ/s1600-h/Nuvola_mimetypes_java_jar.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 128px;" src="http://3.bp.blogspot.com/_on8T2PWMfto/Sb8soCapSYI/AAAAAAAABbU/0q1z_9kqgZQ/s400/Nuvola_mimetypes_java_jar.png" alt="" id="BLOGGER_PHOTO_ID_5314015151675492738" border="0" /&gt;&lt;/a&gt;Cuando cambiamos de versión del JDK en nuestro Debian y queremos ejecutar como si nada ha pasado nuestros archivos jar con el comando "java -jar", tenemos ciertos problemas, ya que el vínculo hacia el JDK viejo o si se carecía del mismo no hará efecto al JDK nuevo. Más si se ha instalado en otra ubicación.&lt;br /&gt;&lt;br /&gt;Eso no importa. aquí está esta pequeña guía para hacerlo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solicitamos primero la versión actual del JDK:&lt;br /&gt;&lt;br /&gt;hugo:/home/hugol/Desktop# java -version&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;java version "1.4.2"&lt;/span&gt;&lt;br /&gt;gij (GNU libgcj) version 4.1.2 20061115 (prerelease) (Debian 4.1.1-20)&lt;br /&gt;&lt;br /&gt;Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;&lt;br /&gt;Vemos que la actual versión es java &lt;span style="font-weight: bold;"&gt;version "1.4.2"&lt;/span&gt;. Tenemos que cambiar a la última, que es la versión 1.6.0. Se hace con el comando &lt;span style="font-weight: bold;"&gt;update-alternatives&lt;/span&gt;, al cual se le pasa la dirección del comando, el comando y la nueva ubicación a la que hará referencia dicho comando. Se hace de la siguiente manera:&lt;br /&gt;&lt;br /&gt;hugo:/home/hugol/Desktop# update-alternatives --install /usr/bin/java java /usr/share/java/jdk1.6.0_11/bin/java 120&lt;br /&gt;&lt;br /&gt;Ahora pedimos de nuevo la versión del JDK, para cerciorarnos que los cambios han tenido efecto:&lt;br /&gt;&lt;br /&gt;hugo:/home/hugol/Desktop# java -version&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;java version "1.6.0_11"&lt;/span&gt;&lt;br /&gt;Java(TM) SE Runtime Environment (build 1.6.0_11-b03)&lt;br /&gt;Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-4700731588897359573?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/4700731588897359573/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/cambiar-la-version-de-jdk-para-ejecutar.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/4700731588897359573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/4700731588897359573'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/cambiar-la-version-de-jdk-para-ejecutar.html' title='Cambiar la versión de JDK para ejecutar archivos JAR en Debian Linux'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_on8T2PWMfto/Sb8soCapSYI/AAAAAAAABbU/0q1z_9kqgZQ/s72-c/Nuvola_mimetypes_java_jar.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9157078824870605615.post-6371335785239565065</id><published>2009-03-13T00:15:00.000-07:00</published><updated>2009-03-16T21:43:01.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion II'/><category scheme='http://www.blogger.com/atom/ns#' term='Try-Catch'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Sencillo programa con sentencias básicas</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Guía de Laboratorio 1: Sentencias Básicas en Java.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Auxiliar de Cátedra: Hugo Alejandro Barrientos&lt;br /&gt;&lt;br /&gt;En esta guía se pondrán en uso todas las sentencias e  instrucciones básicas de la programación para el lenguaje Java, utilizando el popular IDE Netbeans 6.1 para Debian. Las instrucciones que se tomarán en cuenta para realizar estos sencillos ejemplos son:&lt;br /&gt;&lt;br /&gt;IF-ELSE&lt;br /&gt;WHILE&lt;br /&gt;DO-WHILE&lt;br /&gt;FOR&lt;br /&gt;SWITCH&lt;br /&gt;&lt;br /&gt;También se explicará brevemente otro bloque importante y propio de los lenguajes orientados a objetos: la sentencia TRY-CATCH:&lt;br /&gt;&lt;br /&gt;TRY-CATCH es una instrucción básica en la programación dentro de Java y que se utiliza fundamentalmente para el manejo de errores y excepciones.&lt;br /&gt;&lt;br /&gt;Su sintaxis es así:&lt;br /&gt;&lt;br /&gt;&lt;div class="codeview"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt;{&lt;br /&gt;&lt;br /&gt;     //código del programa&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;catch&lt;/span&gt; (NombreDeExcepcion obj){&lt;br /&gt;&lt;br /&gt;//código de contingencia para tratar el error&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Dentro de las llaves del TRY se escribe todo el código del programa y que es susceptible a cualquier tipo de error. Dentro del catch, y definiendo el tipo de excepción que se puede dar, se escriben las líneas que tratarán de paliar dicho error.&lt;br /&gt;&lt;br /&gt;Un ejemplo de esta sentencia:&lt;br /&gt;&lt;br /&gt;&lt;div class="codeview"&gt;&lt;br /&gt;&lt;br /&gt;String s = “a”;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;try&lt;/span&gt;{&lt;br /&gt;     &lt;span style="color: rgb(51, 51, 255);"&gt;char&lt;/span&gt; car=s.charAt(0);&lt;br /&gt;}&lt;br /&gt;    &lt;span style="color: rgb(51, 51, 255);"&gt;catch&lt;/span&gt;(IndexOutOfBoundsException e){&lt;br /&gt;    e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Preguntas: ¿Cuál es la esencia de esta porción de código? ¿Entra esa porción de código al CATCH? ¿Por qué?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;El objetivo de esta guía es realizar un programa en ambiente consola para cimentar las bases de los programadores en la utilización de las instrucciones básicas. El programa debe estar diseñado para que el usuario ingrese seleccione mediante una opción la rutina que quiere ejecutar, y que debe de ser implementada por alguna de las instrucciones básicas mencionadas al principio de esta guía.&lt;br /&gt;&lt;br /&gt;Los casos o rutinas que debe desarrollar el programador son:&lt;br /&gt;• El factorial de un número&lt;br /&gt;• La tabla de multiplicar de un número&lt;br /&gt;• Clasificar la edad del usuario&lt;br /&gt;• Seleccionar la estación del año favorita del usuario y que muestre un mensaje alusivo a la misma.&lt;br /&gt;&lt;br /&gt;El programador debe ser capaz de seleccionar la instrucción o sentencia básica idónea para cada caso.&lt;br /&gt;&lt;br /&gt;Ejemplo:&lt;br /&gt;&lt;br /&gt;Se empezará por obtener el factorial de un número. Conociendo el procedimiento de tal operación, se escogerá realizarlo mediante las sentencias WHILE y DO-WHILE, en vista que el programador pueda  verificar ambos procesos para una misma operación:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Factorial utilizando WHILE&lt;br /&gt;&lt;br /&gt;&lt;div class="codeview"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factorial=1;         //acumulador&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; cont=1;                    // contador&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; valor=10;          //número del que queremos el factorial&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;while&lt;/span&gt; (cont &lt;= valor) {       factorial *= cont;                  cont++; }   &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Factorial utilizando DO-WHILE&lt;br /&gt;&lt;br /&gt;&lt;div class="codeview"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; factorial=1;                //acumulador&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int &lt;/span&gt;cont=0;                      // contador&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;int&lt;/span&gt; valor=10;        //número del que queremos el factorial&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;do&lt;/span&gt;{&lt;br /&gt;cont++;&lt;br /&gt;factorial*=cont;&lt;br /&gt;}&lt;span style="color: rgb(51, 51, 255);"&gt;while&lt;/span&gt;(cont &lt; valor)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pregunta: ¿Puede ver la diferencia entre ambos bucles? ¿Dónde radica la diferencia entre ambos?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ejercicios:&lt;br /&gt;&lt;br /&gt;1. Se le pide al programador que realice las porciones de código restantes, utilizando su buen criterio para utilizar las instrucciones básicas restantes. Los ejercicios restantes son:&lt;br /&gt;&lt;br /&gt;• La tabla de multiplicar de un número&lt;br /&gt;• Clasificar la edad del usuario&lt;br /&gt;• Seleccionar la estación del año favorita del usuario y que muestre un mensaje alusivo a la misma.&lt;br /&gt;&lt;br /&gt;2. Realice una aplicación Java en modo consola en Netbeans en donde el usuario pueda escoger cualquiera de las porciones de código creadas por Ud. para que se ejecuten. Puede utilizar cualquiera de las sentencias básicas para la creación de su aplicación.&lt;br /&gt;&lt;br /&gt;3. Se solicita que su aplicación también se pueda desarrollar todas las veces que el usuario desee.&lt;br /&gt;&lt;br /&gt;4. Debe además manejar los tipos de excepciones que se le presenten.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Algunos consejos:&lt;br /&gt;&lt;br /&gt;• Para ingreso de datos mediante teclado, puede utilizar la clase BufferedReader de java.io&lt;br /&gt;&lt;br /&gt;• No se preocupe por la orientación a objetos. Trabaje de forma estructurada POR ESTA VEZ.&lt;br /&gt;&lt;br /&gt;• Trate de leer toda la información que el IDE le brinda. El tipo de datos que los métodos utilizan, los que devuelven, las excepciones que generan, etc.&lt;br /&gt;&lt;br /&gt;• Es útil la conversión entre tipos de datos. Si no conoce cómo hacerlo, favor pregunte a su instructor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9157078824870605615-6371335785239565065?l=javacafesv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javacafesv.blogspot.com/feeds/6371335785239565065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javacafesv.blogspot.com/2009/03/sencillo-programa-con-sentencias.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/6371335785239565065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9157078824870605615/posts/default/6371335785239565065'/><link rel='alternate' type='text/html' href='http://javacafesv.blogspot.com/2009/03/sencillo-programa-con-sentencias.html' title='Sencillo programa con sentencias básicas'/><author><name>Hugo Barrientos</name><uri>http://www.blogger.com/profile/09732801508756249569</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='19' height='32' src='http://2.bp.blogspot.com/_on8T2PWMfto/SrHg3ABaweI/AAAAAAAABiA/v3qAivHiB6Q/S220/ridiculum.JPG'/></author><thr:total>0</thr:total></entry></feed>
