PAGINA CON EXCELENTES PROGRAMAS Y EJEMPLOS JGRASP http://todojava.awardspace.com/ejemplos-java.html ¿Qué son los mensajes? Para poder crear una aplicación se necesita más de un objeto, y estos objetos no pueden estar aislados unos de otros, para comunicarse esos objetos se envían mensajes. Los mensajes son simples llamadas a las funciones o métodos del objeto con el se quiere comunicar para decirle que haga alguna cosa. ¿Qué es la herencia? La herencia es un mecanismo que permite crear una clase basándose en una clase existente, y ésta tendrá todas las variables y los métodos de su ‘superclase’, y además se le podrán añadir otras variables y métodos propios. Se llama ‘Superclase’ a la clase de la que desciende una clase. Polimorfismo (Poli=muchos; morfo=Formas), Polimorfismo, es la cualidad de tener más de una forma. Java, permite que el código de sus programas tenga la posibilidad de ser usados con diferentes tipos de datos u objetos. Por ejemplo, supongamos que A y B son dos variables de tipo entero, entonces, la operación: C= A+B Nos devolverá la suma de éstos dos números, el cuyo resultado será guardado en la variable C. Pero supongamos que A y B son del tipo String (es decir, dos cadenas de caracteres): String A= "Hola"; String B= "Bienvenidos a la Programación en Java"; String C; C=A+B; Al tener esa secuencia de commandos, ya no obtendremos como resultado la suma de esos dos números, sino la concatenación de esas dos cadenas. Por tanto, el resuldao en pantalla, sería el siguiente: Capítulo II: Introducción al Lenguaje de Programación Java Antes de iniciar con instrucciones, reglas y otras bondades, de Java, es necesario más Bla-bla-bla, vamos a empezar hablando un poco acerca de la historia de Java. El lector se preguntará, el por que se le da tanta importancia a detalles como éste, y es por que, un programador debe conocer muy bien en el ambiente en el que se desarrolla. Así como el médico conoce muy bien el cuerpo humano, y así puede detectar cuando alguna de las partes de éste anda fallando, o como el soldado que conoce muy bien el campo de batalla, para que no vaya ser víctima de una emboscada por parte del enemigo. De igual manera el programador en Java, debe conocer hasta el más mínimo detalle de éste lenguaje de Programación, y no sólo de java, sino de todos los lenguajes, en los cuales nos decidamos experimentar y conocer. 2.1 Historia de Java Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. La reducida potencia de cálculo y memoria de los electrodomésticos llevó a desarrollar un lenguaje sencillo capaz de generar código de tamaño muy reducido. Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un código "neutro" que no dependía del tipo de electrodoméstico, el cual se ejecutaba sobre una "máquina hipotética o virtual" denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el código neutro convirtiéndolo a código particular de la CPU utilizada. Esto permitía lo que luego se ha convertido en el principal lema del lenguaje: "Write Once, Run Everywhere". A pesar de los esfuerzos realizados por suscreadores, ninguna empresa de electrodomésticos se interesó por el nuevo lenguaje. Como lenguaje de programación para computadores, Java se introdujo a finales de 1995. La clave fue la incorporación de un intérprete Java en la versión 2.0 del programa Netscape Navigator, produciendo una verdadera revolución en Internet. Java 1.1 apareció a principios de 1997, mejorando sustancialmente la primera versión del lenguaje. Java 1.2, más tarde rebautizado como Java 2, nació a finales de 1998. Al programar en Java no se parte de cero. Cualquier aplicación que se desarrolle "cuelga" (o se apoya, según como se quiera ver) en un gran número de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un número muy importante de clases que forman parte del propio lenguaje (el API o Application Programming Interface de Java). Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro lenguaje son extensiones propiedad de empresas de software o fabricantes de ordenadores (threads, ejecución remota, componentes, seguridad, acceso a bases de datos, etc.). Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la informática moderna, porque incorpora todos estos conceptos de un modo estándar, mucho más sencillo y claro que con las citadas extensiones de otros lenguajes. Esto es consecuencia de haber sido diseñado más recientemente y por un único equipo. El principal objetivo del lenguaje Java es llegar a ser el "nexo universal" que conecte a los usuarios con la información, esté ésta situada en el ordenador local, en un servidor de Web, en una base de datos o en cualquier otro lugar. Java es un lenguaje muy completo (de hecho se está convirtiendo en un macro-lenguaje: Java 1.0 tenía 12 packages; Java 1.1 tenía 23 y Java 1.2 tiene 59). En cierta forma casi todo depende de casi todo. Por ello, conviene aprenderlo de modo iterativo: primero una visión muy general, que se va refinando en sucesivas iteraciones. Una forma de hacerlo es empezar con un ejemplo completo en el que ya aparecen algunas de las características más importantes. La compañía Sun describe el lenguaje Java como "simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinámico". Además de una serie de halagos por parte de Sun hacia su propia criatura, el hecho es que todo ello describe bastante bien el lenguaje Java, aunque en algunas de esas características el lenguaje sea todavía bastante mejorable. Algunas de las anteriores ideas se irán explicando a lo largo de este manual (Tomado de: "Aprenda Java como si estuviera en Primero"). 0). El applet se descarga desde el servidor y no requiere instalación en el ordenador donde se encuentra el browser. consistentes en crear aplicaciones capaces de conectarse a otros ordenadores y ejecutar tareas en varios ordenadores simultáneamente.dl=download_jgrasp. ejecución como applet. Los programas desarrollados en Java presentan diversas ventajas frente a los desarrollados en otros lenguajes como C/C++. Debe descargar al archivo jdk-1_5_0_07-windows-i586-p y luego instalarlo.2.0_07. Después de haber instalada a Java2 debe instalar a JGrasp ya que éste es el que nos servirá como editor de nuestros programas. también de forma gratuita. usaremos el compilador: JGrasp 1. ésta operación puede tardar algunos minutos.1 sí los hubo respecto a Java 1.5.java. repartiendo por lo tanto el trabajo. Además de incorporar la ejecución como Applet. ejecución como servlet. desde http://www. Java permite fácilmente el desarrollo tanto de arquitecturas cliente-servidor como de aplicaciones distribuidas. Un applet es una aplicación especial que se ejecuta dentro de un navegador o browser (por ejemplo Netscape Navigator o Internet Explorer) al cargar una página HTML desde un servidor Web.com Java 2 Lo primero. Aunque también otros lenguajes de programación permiten crear aplicaciones de este tipo. Éste curso hemos trabajado con el JDK 1. La ejecución como aplicación independiente es análoga a los programas desarrollados con otros lenguajes. La ejecución de programas en Java tiene muchas posibilidades: ejecución como aplicación independiente (Stand-alone Application).1 o con Java 1.1 (en Java 1.2) es la tercera versión importante del lenguaje de programación Java. No hay cambios conceptuales importantes respecto a Java 1.2 o JDK 1. y para compilar los programas.html Java 2 (antes llamado Java 1.sum.pl?. usaremos una de las versiones más recientes de Java. y si la PC es un poco lenta. Un servlet es una aplicación sin interface gráfica que se ejecuta en un servidor de Internet. le sugiero tener mucha paciencia.sea casi lo mismo trabajar con Java 1.eng.edu/user-cgi/grasp/grasp. es que debe estar instalado primero la Máquina virtual de Java. etc. lo cual hace que a muchos efectos –por ejemplo. Java incorpora en su propio API estas funcionalidades. sino extensiones y ampliaciones. el cual puede obtenerse de forma gratuita y sin problemas de licencia en: Spider. .En éste curso.auburn. para esta introducción. el cual se encuentra el hoja web mencionada arriba. Este puede descargarse.8.4 de la Universidad de Auburn. como lo es Java 2. Deberá aparecer una ventana. para ello. Ahora debe verificar que tiene seleccionado el ambiente que recién acaba de crear. Y en la opción llamada V1(%V1) que aparece casi al final de la ventana debe instalar la dirección completa en la cual se encuentra instalado Java en su máquina (Ejemplo: C:\Archivos de programa\Java\jdk1. sea Java y que esté seleccionada las pestaña que dice: Enviromennt. debe abrir éste programa (JGrasp) y en el menú principal.5).5.Después que haya instalado a JGrasp ( si es que está haciendo uso de éste programa). seleccione nuevamente el ambiente que ha creado (la copia de j2sdk 1. como la que se muestra a la derecha. Luego seleccionar la carpeta j2sdk 1.5 y dar un clic en el botón copy . escoger Setting. luego Compiler Setting y luego Workspace. puede cambiar el nombre de la copia. luego clic en Apply y clic en Ok. Luego debe seleccionar esa copia que acaba de hacer (generalmente aparece hasta el final del listado) y dar un clic en el botón edit . luego clic en OK. es necesario: à Editar el programa à Compilarlo .0_08\bin\) Las demás opciones No deben ser modificadas. En ella debe cerciorarse que en la opción de lenguaje. Para desarrollar un Programa en Java. en la ventana que aparecerá. aparecerá otra ventana. hay que distinguir esencialmente dos grandes rubros: Tipos de datos Orientados a Objetos Tipos de Datos Simples Tipos boolean Descripción Representa valores TRUE/FALSE.483.768 a 32.767 Valores numéricos de –2. se utiliza para representar datos de tipo Carácter.147.2 8 bits 16 bits 32 bits 64 bits Valores numéricos de –128 a 127 Valores numéricos de –32. Esta es una de las grandes diferencias respecto a C Representa enteros de 8 bits Al igual que en C.147.à Ejecutarlo à Depurarlo ¿Cómo Realizar Un Programa en Java? Tipos de Datos En java.483. . Valores de punto flotante pero con doble precisión Valores de tipo Real con precisión Simple Sirve para representar valores de tipo entero Entero Largo Entero corto byte char double float int long short Tabla 2.1 Veamos un poco Acerca del rubro de los datos de tipo Entero: byte short int long Tabla 2.647 Valores numéricos sin límite.648 a 2. io. una clase se especifica con la palabra reservada class. Un programa en java. hablares en su momento. únicamente con class por que después comprenderá la diferencia y podrá aplicarlo a sus programas. siempre. import java. por el momento el usuario. del paquete javax. En java. Eje: class PrimerPrograma { Como puede verse. pero NUNCA debe omitirse los corchetes. donde especificamos los paquetes que vamos a usar en nuestro programa. (El cual nos ayuda para poder usar las cajitas de texto para mandar información a la pantalla o para leerla desde el telado). el cual SIEMPRE SERÁ uno del tipo String. *EL PROGRAMA PRINCIPAL: El cual siempre. debe poseer AL MENOS una clase. con ayuda de la sentencia import y acompañado de un punto y coma (.io. especificamos que archivos del paquete que queremos usar.swing. *LAS CLASES: Un Programa en java.Los tipos de datos Orientados a Objetos son: à Clases à Interfaces à Arrays De os cuales. De lo cual hablares más adelante. siempre se especificará de la siguiente manera: public static void main (String args[]) { Lo que está entre los parentesis.swing.*.JOptionPane. con la cual se debe proseguir en la configuración de nuestro programa. debe iniciar con mayúscula.1 Diseñe un programa en Java que muestre en pantalla un saludo de Bienvenida al Usuario. Eje: Import javax. Además el nombre de la clase. puede ser cambiado. Ahora veamos un pequeño Ejemplo: Ejemplo 2. . al agregarle el asterisco. Una clase puede ser: Pública o Privada. el nombre de args. debe unicamente especificar una clase. indica nada más los argumentos que recibe nuestro programa. Los cuales deben ser especificados al inicio del programa. como en el primer caso. podemos incluir todo el paquete. como en el caso de java. en el cual estamos incluyendo (o mejor dicho importando) el archivo JOptionPane. debe tener los siguientes elementos: *LA ZONA DE INCLUSIÓN: que es similar al pre-procesador de C.) al final de la instrucción. o simplemente. es decir que.java). es por tal razón que debemos estar seguros que el archivo ha sido guardado con el mismo nombre de la clase. se necesitan entre muchas cosas. Para declarar una variable en Java. y será más o menos así: Luego encontramos la llave correspondiente al main y la llave correspondiente a la clase. incluye éste paquete en todos los programas que creamos). SIEMPRE se debe llamar igual que la clase.out.println("Hola! Bienvenido a Java"). generalmente el coloca el nombre y lo unico que tenemos que hacer es dar clic en guardar en el commandwindow. Otra cosa importante es que. encontramos la llamada al paquete. Si está usando JGrasp. valores. Luego encontramos la declaración de la clase. Por que de lo contrario lanzará una excepción ( de la cual hablaremos más adelante) y NO correrá el programa. 5} 6} Explicación En la línea numero Uno. como puede observar la primera letra es mayúscula. la cual tiene la propiedad de cambiar a medida se ejecuta la aplicación ( a diferencia de las constantes cuyo valor NO cambia). encontramos la sentencia System. la cual es PrimerPrograma.out. la cual será mostrada en la consola de DOS.println.1 import java.println(). por defecto. JGrasp no lo coloca. que cambien a medida se ejecuta el programa. es necesario hacer uso de las variables que no son más que una unidad de almacenamiento. pero a veces. y como el nombre está compuesto por dos palabras (Primer y Programa). datos. el cual nos sirve para mandar información a pantalla. 2 class PrimerPrograma { 3 public static void main (String args[]){ 4 System. ya que Java. con esos paradigmas de la programación. Uso de Variables En todas las aplicaciones que realizamos.lang. un programa que solo muestre en pantalla datos (como el ejemplo 2. es por tal razón que cada una de ellas tienen su primera letra mayúscula. el cual es java. este código. Para ello. Por tal razón. está guardado como: PrimerPrograma. se prosigue de la siguiente forma: tipo identificado=valor. el nombre del archivo.*.out. sin embargo NO es necesario especificarlo. Donde: . Posteriormente.1). ( que tiene extención *.java. no es muy funcional que se diga.lang (éste paquete nos ayuda para usar las funciones matemáticas y otras funciones como System. una cadena de caracteres. tenemos una variable del tipo real.Tipo: Es el tipo de dato que almacenará. se puede hacer notar que saldo.println(edad). Ejemplos: 1 int i.00. la variable Nombre. class DatosPersonales { public static void main (String args[]) { String Nombre="Manuel Ortez". es decir. acumuladores . Identificar: que hace referencia al nombre de la variable. etc. double sueldo=500. podemos asumir que se trata de un acumulador. y todos los valores de una cadena se escriben entre comillas dobles.out. System. en el método System.1. 4 String Nombre En la línea uno. Ejemplo 2. Valor: No es necesario. 3 double saldo. si una ( o más cadenas) se van a mandar a impresión acompañadas de una (o más variables).println("Sueldo: "+sueldo). pero Java permite inicializar variables. la cual está inicializada. está declarada como real de doble precisión. }//fin del main }//fin de la clase Explicación Como puede notarse.println("Edad: ").println("Nombre del empleado: "+Nombre). y finalmente en la línea 4 se encuentre Nombre que es una variable de tipo String. es una cadena de caracteres.//Impresion de la leyenda edad System. edad y sueldo de una persona.out. System. el cual puede ser cualquiera de los que se muestran en la tabla 2. int edad=20.out.out. ya que Java soporta este tipo de datos. 2 float suma=0.out. .println(edad).2 Programa que Muestra el nombre. mediante el operador ‘+’. en la línea dos. estamos declarando una variable de tipo entero. por ejemplo.out. podemos hacer varias combinaciones al momento de mandar a la impresión. identificada por i. inicializada a cero. Además note que. estos argumentos se unen.printl. Sin embargo. los contadores. esto no es necesario cuando se trata de la impresión de una sola variable: System. Para el caso. Luego. System. PI es una constante. está dentro del paquete de java. note que la única impresión que se hace. La primera. nos ayudan a enriquecer nuestro código y hacerlo más robusto y funcional. como ya lo hemos dicho. (3. System. es que Math. por tal razón se utilizan en variables de tipo numéricas. Tipos de datos No orientados o Objetos (Muy parecidos a los de C) En todas las aplicaciones. Comentarios y Literales. Elementos de Un programa en Java Operadores. además que. sino en cualquier otro lenguaje de programación.PI*radio*radio. la cual. en lo único que debemos poner atención es en dos cosas. relacional. enlazamos los parámetros con el operador ‘+’. podemos encontrar los siguientes tipos: à Operadores Aritméticos à Operadores a nivel de Bit à Operadores Relacionales à Operadores Lógicos Operadores Aritméticos Estos operadores se utilizan para realizar diferentes operaciones aritméticas. es un símbolo que le indica al compilador que realice una determinada operación. No solo en Java.).println("El area es: "+area+" Y el perímetro es: "+perimetro).out. En Java.lang. el cual. Como consecuencia.3 Programa que calcula el area y el perímetro de un círculo class Circulo { public static void main (String args[]) { double radio=2. en todos nuestros programas de manera automática. double perimetro. . area=Math. perimetro=2*Math. Operadores Un Operador.PI*radio. nacen los diferentes tipos de operadores que existen. etc. System. double area.out.14159…. aritméticas. por defecto.println("El area es: "+area+" Y el perímetro es: "+perimetro).Ejemplo 2. está incluido. ya sea lógica. } } Explicación Me parece que.3. int y=12.out. System.out. x++.out. } } Operadores Lógicos Operador && || ! Operadores Relacionales Descripción Y lógico. resultado=x/y.println("El resultado de la suma es: "+resultado). int resultado. System. resultado=y-x.out. !(Condicion1) Suma Resta Multiplica Divide Devuelve el resto de una división Incrementa en 1 Decremento en 1 .println("El resultado de la resta es: "+resultado).println("El resultado de la división es: "+resultado). System. Condicion1 || Condicion2 Negación.Aritméticos DESCRIPCIÓN + * / % ++ -Tabla 2. System. resultado=x+y.2 Ejemplo 2. y++. Condicion1 && Condicion2 O lógico.println("Ahora x es: "+x+"y Y es: "+y).4 Programa que usa varios tipo de instrucciones class Operadores { public static void main (String args[]){ int x=10. . y se extiende hasta el final de la línea. posee tres tipos de comentarios: Comienza con /* y termina con */. para nosotros los humanos.Operador == != > < >= <= Comentarios Descripción Es igual a No es igual a (Distinto) Mayor que Menor que Mayor o Igual a Menor o igual que Un comentario es un mensaje cualquiera. la secuencia de ejecución del programa. Comentario de Documentación Comienza con /** y termina con */ son comentario especiales que javadoc utiliza para generar. Ejemplo: //Este comentario es válido sólo para una línea 3. Ejemplo: /*Ejemplo de un comentario */ /* También podemos escribir Nuestros comentarios En varias líneas*/ Tradicional: De una sola línea: Comienzan con una doble barra (//). El Salvador Diciembre de 2006*/ Literales Los literales. en él podemos escribir una línea o un párrafo completo. y que ayuda. que se escribe entro del código. Ejemplo: /** Programa Visor 3. tiempo después.11 San Salvador. son valores fijos que son legibles. Java. al programador para futuros mantenimientos y para comprender. pero que no es interpretado por le compilador. Generalmente son llamados constantes. documentación acerca del programa. se encierran entre comillas simples. así: ‘m’.75. los literales. Así: "Manuel\nOrtez". son lo mismo?. se utiliza para cambiar de línea. -1. puede contener una o más secuencias de escape. un literal de tipo String. `$`. ni tampoco van entre comillas. Si mandamos a imprimir esa literal. Las constantes enteras. Las Literales de tipo cadena. Las constantes de tipo flotante. la secuencia de escape ‘\n’. Ejemplo: 10. entero. Las constantes de tipo carácter. Así: "Ejemplo de una cadena". booleanas y null. 142. Además.639. Por ejemplo. y el tipo double?________________________________________________________________________________________ _______________________________________________________________________________________________ __ ¿Un literal y una constante. veremos el siguiente resultado: Preguntas Mencione. cuáles son los dos grandes rubros de tipos de datos en Java:___________________________________________________________________________________________ _____________________________________________ ¿Cuál es la diferencia entre el tipo float y double?________________________________________________________________________________________ _______________________________________________________________________________________________ __ ¿Para que sirve el tipo Srtring. son aquellas que se componen de una parte entera. son aquellas que no llevan parte fraccionaria.En java. se especifican entre comillas dobles. cadenas. un punto decimal. pueden ser del tipo real. ¿si? ¿no? ¿Por qué?___________________________________________________________________________________________ _______________________________________________________________________________________________ __ ¿Cuáles son la diferencias entre los 3 tipos de comentarios que Java soporta?________________________________________________________________________________________ . y una parte fraccionaria: 8. swing. "Mensaje").*. el momento. Sin embargo Java permite el uso de ventanas. Así como el uso de aplicaciones web. que produzca como resultado. ya que corren en la ventana de DOS. que contenga un método main.showMessageDialog(null.1 Uso del paquete javax. como se leen cada uno de esos números Diseñe una clase en Java._______________________________________________________________________________________________ __ Ejercicios Escriba un programa que imprima su nombre en pantalla Diseñe un programa en Java. SIMPRE lo pondremos en el método MessageDialog "Mensaje". 5} 6} El resultado que veremos en la pantalla es el siguiente: . 3. los 5 primeros números y a la par. lo que se conoce como Applet. en orden alfabético. tal parece que. el nombre de cinco personas.1 Veamos este ejemplo que. que muestre la cantidad de gramos que hay en 3 Kg (1Kg=1000g). Capítulo III: "Entorno Gráfico y Applets" Hasta. 2 class Mensaje{ 3 public static void main (String args[]){ 4 JOptionPane. por que. si queremos mandar imprimir en pantalla algún mensaje. contiene dos de los métodos más importantes. en un solo método de impresión. por medio de una ventana.*. en cuanto a lo que a entorno gráfico se refiere."Hola"). En donde: Null. manda a impresión el mensaje de Hola 1 import javax. Este paquete. nuestros programas fuesen compilados en C. es argumento que. Se desea crear una clase. la tabla de multiplicar del 7. no hemos conocido las bondades de Java. Por ejemplo. el cual muestre. la sintaxis es la siguiente: JOptionPane. Diseñe un programa que muestre en pantalla. Ejemplo 3.showMessageDialog(null. es la cadena de caracteres que queremos imprimir.swing. para leer y mostrar datos. de la forma siguiente: Var=JOptionPane. double.*. etc.showInputDialog("Mensaje"). éste método devuelve un tipo de dato String. las secuencias de escape que. 6} 7} Leer Datos Para leer los datos. Ejemplo 3.2 Note. Donde: Var: es el nombre de la variable que hace referencia al valor leído.showMessageDialog(null. en la caja de diálogo."Manual de Java\nUna forma Facil de Aprender a Programar\n\n\t\tDiciembre de 2006"). Pero debemos tener presente que.swing. "Creado por Manuel Ortez").Ejemplo 3. debemos realizar la conversión. por tal razón cuando leamos un flotante. 5 JOptionPane. 2 class Mensaje1{ 3 public static void main (String args[]){ 4 JOptionPane. usamos el método ShowInputDialog.3 Programa que lee un nombre y luego lo imprime . también se pueden utilizar en éste método 1 import javax. int. Mensaje: Es el mensaje que aparecerá.showMessageDialog(null. *. 13 resultado=n1-n2. después de haber leído los valores correspondiente. n2. hacemos el cambio así: N1=Double. 2 class Mensaje2{ 3 public static void main (String args[]){ 4 String Nombre.showInputDialog("Escriba el primer Número"). 9 leer=JOptionPane. es la clase que contiene al tipo de dato double. 14 JOptionPane. que permita. "El resultado de la división es: "+resultado).showMessageDialog(null.parseFloat(leer). 19 } 20 } Explicación El lector.//Estos son los numeros 5 String leer. 17 resultado=n1/n2. la variable leer. Para el caso. "El resultado de la multiplicación es: "+resultado).swing.showMessageDialog(null. 16 JOptionPane.4 Se desea Crear una Mini-calculadora. 6 JOptionPane.showMessageDialog(null.1 import javax.showInputDialog("Digite su nombre"). 7 //Esta es la forma para hacer el cambio de cadena a doble 8 n1=Double. 12 JOptionPane.*. la forma en que debe hacer la conversión de un carácter a un valor diferente.parseDouble(leer). 7 8} 9} Ejemplo 3.showMessageDialog(null. Double. 15 resultado=n1*n2.showMessageDialog(null. debe notar. . que deseamos convertir a double. "El resultado de la resta es: "+resultado). 1 import javax. 11 resultado=n1+n2.parseDouble(leer).showInputDialog("Escriba el primer Número"). "El resultado de la suma es: "+resultado). luego se escribe el método parse.//variable auxiliar con la cual leeremos los datos 6 leer=JOptionPane. que contiene el número(en cadena de caracteres).parseDouble(leer). Si lo que queremos es convertirlo a float: N1=Float. restar y multiplicar dos números ingresados por el usuario. sumar. 5 Nombre=JOptionPane.parseInt(leer). resultado. 2 class MiniCalcu{ 3 public static void main (String args[]){ 4 double n1. 10 n2=Double. Si queremos convertir a entero: N1=Integer. la línea 8 y 13. 18 JOptionPane. "Bienvenido "+Nombre).swing. y le pasamos como argumento. à Las applets también suelen redefinir ciertos métodos gráficos: los más importantes son paint() y update(). mientras que la capacidad de añadir componentes de interface de usuario se hereda de Container y de Panel. y repaint() heredado de Component. es mejor aprender a usar applets. à Método init() . tratan éste tópico hasta muy avanzados en el curso.Applet. Internet Explorer. getDocumentBase(). heredados de Component y de Container. al cargar una página HTML que contiene información sobre el applet a ejecutar.applet.3. animaciones. à Todas las applets derivan de la clase java. ¿Qué es un Applet? Un Applet. En este manual lo más importante es el punto de vista del programador: à Las applets no tienen un método main() con el que comience la ejecución. getCodeBase(). getParameter(). La Figura de la izquierda muestra la jerarquía de clases de la que deriva la clase Applet. à Se heredan otros muchos métodos de las super-clases de Applet que tienen que ver con la generación de interfaces gráficas de usuario (AWT). getParameterInfo(). etc). son más conocidas en Internet. considero que.2 Uso de Applet`s Muchos de los libros y Manuales de Java. stop(). à Las applets disponen de métodos relacionados con la obtención de información. que generalmente. como por ejemplo: getAppletInfo(). start(). Métodos que controlan la ejecución de un applet Los métodos que se estudian en este Apartado controlan la ejecución de las applets. destroy(). Las applets deben redefinir ciertos métodos heredados de Applet que controlan su ejecución: init(). antes de tratar otros temas como los elementos gráficos. y que se ejecuta en un navegador (Netscape. es una mini-aplicación escrita en Java. Sin embargo. Así. getAppletContext(). De ordinario el programador tiene que redefinir uno o más de estos métodos. etc. pero no tiene que preocuparse de llamarlos: el browser se encarga de hacerlo. e isActive(). los métodos gráficos se heredan de Component. El papel central de su ejecución lo asumen otros métodos que se verán posteriormente. Algunas características de las applets Las características de las applets se pueden considerar desde el punto de vista del programador y desde el del usuario. que siempre debe ser importada por el applet. El método paint() se declara en la forma: public void paint(Graphics g) El objeto gráfico g pertenece a la clase java. Redefinir update() de forma que no borre toda la ventana sino sólo lo necesario. dejarían sin recursos al applet o incluso al browser. etc. En Netscape Navigator se puede reinicializar un applet con Shift+Reload. 2. texto. Redefinir paint() y update() para utilizar doble buffer.). pues el que se hereda cumple bien con esta misión.Graphics. à Método start() El método start() se llama automáticamente en cuanto el applet se hace visible. al hacer reload.) se debe incluir en el método paint(). el programador crea el método paint() pero no lo suele llamar. Este método se ocupa de todas las tareas de inicialización. pues no requiere argumentos. que borra todo pintando de nuevo con el color de fondo y luego llama a paint(). El método repaint() se encarga de llamar a paint() a través de update(). en este método se suelen parar las threads que estén corriendo en el applet. al cambiar el tamaño de la ventana del browser. Con objeto de no consumir recursos inútilmente.awt. Por ello deben redefinir los métodos gráficos paint() y update(). De ordinario no es necesario redefinir este método. à Método stop() El método stop() se llama de forma automática al ocultar el applet (por haber haber dejado de estar activa la página del browser. Métodos para dibujar el applet Las applets son aplicaciones gráficas que aparecen en una zona de la ventana del browser. por haber realizado algún cambio) se utiliza el método repaint(). El método repaint() llama a update(). después de haber sido inicializada.) y es creado por el browser. porque este método es llamado cuando el applet se dibuja por primera vez y también de forma automática cada vez que el applet se debe redibujar. Se llama también cada vez que el applet se hace de nuevo visible después de haber estado oculta (por dejar de estar activa esa página del browser. que es más fácil de usar. formas gráficas. . Todo el trabajo gráfico del applet (dibujo de líneas. colores. etc. A veces esto produce parpadeo de pantalla o flickering. Para pedir explícitamente al sistema que vuelva a dibujar el applet (por ejemplo. etc. por hacer reload o resize. por el tiempo que requieren. Este objeto define un contexto o estado gráfico para dibujar (métodos gráficos. por ejemplo para mostrar animaciones. realizando las funciones del constructor (al que el browser no llama). En general. Existen dos formas de evitar el flickering: 1. fonts.). Las animaciones y ciertas tareas a través de Internet son ejemplos de este tipo de tareas. etc.Se llama automáticamente al método init() en cuanto el browser o visualizador carga el applet. à Método destroy() Se llama a este método cuando el applet va a ser descargada para liberar los recursos que tenga reservados (excepto la memoria). Es habitual crear threads en este método para aquellas tareas que. dando un clic sobre el botón: o en Build/Run as Applet. 4 //declaración de la clase 5 public class PrimerApplet extends Applet 6{ 7 String leyenda. comenzando en las coordenadas x=50 y Y=50 19 } 20 } Explicación Para correr èste código. primero le damos las características.y). Font.1. Cuando mostramos la cadena. Font.y).x.drawString("mensaje". la posición donde se muestra se lo indicamos mediante los valores de x e y.x.awt. Objeto_grafico. Luego utilizaremos el método setFont para establecer ese tipo de letra.paint(g).5 Diseñe un Applet que Dibuje una leyenda. 3 import javax.ITALIC Cursiva. Luego compilarlo.showInputDialog("Ingrese la Leyenda que Desea Dibujar:"). procedemos a ejecutarlo.drawChars("mensaje". 17 g.applet.drawString(leyenda. estilo y tamaño. una vez hecho esto. la cual el usuario ingresará mediante una caja de texto. 2 import java. 1 import java. Para mostrar esa cadena utilizaremos otros métodos dentro de paint.PLAIN Normal.BOLD Negrita.*. En resumen para trabajar con texto. 12 } 13 public void paint(Graphics g) 14 { 15 //llamar a la versión del método paint de la clase Applet 16 super. Ejemplo 3.50).swing. 8 public void init() 9{ 10 //vamos a leer 11 leyenda=JOptionPane. 50. 18 //dibujamos el contenido de leyenda. que es el extremo izquierdo de la línea base de los caracteres.pos_char. una vez que hemos digitado todas las instrucciones. Los valores que puede tomar el parámetro estilo son: ESTILO DESCRIPCIÓN Font.Applet. . lo que debemos hacer es guardar el archivo.*. luego las establecemos y por último lo mostramos. MOSTRAR TEXTO: Objeto_gráfico.Mediante el objeto de la clase Font asignaremos tipo de letra. *. de cuentan de la esquina superior izquierda.drawOval(5. esa clase de deriva de la SuperClase Applet. 20. Ejemplo 3.250. Para dibujar una línea.*. Luego. dibuje un rectangulo. el lector debe notar una palabra.En la línea cinco. le indica al compilador que. Para dibujar un övalo. el nombre de la misma. base altura y coordenadas g.drawRet(20. 2 import javax. realizamos una declaración. los métodos siempre serán del tipo public y no devolverán ningún valor (void). Otros métodos útiles son: g. 1 import java. nueva extends la cual.50). hacia la derecha (para x).50). El método drawString. radio mayor.swing. radio Menor y Coordenadas.drawLine(10. note que. para que ésta variable pueda ser utilizada por cualquier método sin necesidad de pasarla como parámetro. de la variable que vamos a leer. Estas coordenadas. un óvalo y una línea. además que paint.50. ancho alto. las coordenadas donde iniciará a dibujar. recibe como parámetro. 3 public class DibujosVarios extends JApplet{ . y que es del tipo Graphics. 50. esto es.10. además que. y hacia abajo (para y).6 Se desea crear un Appletque. Recuerde.awt. de la cual siempre debemos especificar. a g (que puede llamarse diferente). se utiliza para dibujar una cadena de caracteres. e indique.30).6. Para dibujar un rectángulo. lo hacemos fuera de cualquier método. con una leyenda. y que por tanto éste archivo debe ser tratado como un Applet. y coordenadas g. 40. tenga uno u otro color. es necesario crear un archivo HTML.drawString("Este es un Reactangulo".100).paint(g).4 5 public void paint(Graphics g) 6{ 7 super.htm.drawString("Este es un Ovalo". 30.drawOval(300.drawString("Esta es una Línea".25.class" width="500" height="250" > </applet> </html> Recuerde que. el siguiente código: <html> <applet code="DibujosVarios.25.100. 11 g.drawRect(150. 150.50. para ver el resultado siguiente: Colores en los Applets Podemos hacer. o que el fondo del applet. éste archivo. éste archivo. 8 g. lo debe editar con el bloc de notas y guardarlo con extención *.25). 12 g.100).drawLine(25. 10 g.20). 300.100). que contenga. 9 g. que un objeto tenga un color en específico. La sintaxis es la siguienmte: .25. 60). 13 g. 14 } 15 } Explicación Para poder ver. 75).blue).drawString("A la programación con Applet". yellow. 14 g.setColor(Color. red.50).setColor(Color.drawString("Con Java". 17 g. 15 g.7 Diseñe un Applet que muestre un mensaje en tres colores diferentes. 13 g.variable_color). darkGrayy lightGray Ejemplo 3. green.swing.*.white). 7} 8 9 public void paint (Graphics g) 10 { 11 super. 25. 2 import java.cyan).setColor(Color.à Para objeto: Nombre_de_objeto. puede ser: black. 25.setColor(Color.*.drawString("Bienvendido". cyan. 18 } 19 } Botones Los Botones disparan un evento (acción). 1 import javax.25). 16 g. //Crea un Botón con el rótulo S . Los botones se construyen mediante la Clase Button: Public Button(). blue. orange. 3 public class Dibujos extends JApplet { 4 public void init() 5{ 6 setBackground(Color. à Para el fondo: setBackground(Color. white. 12 g.variable_color). 25.paint(g). cuando son accionados (al dar un clic sobre él). Variable_color.yellow). gray. //Crea un Botón sin rótulo Public Button(String S).awt. etc. Por último. } (4)return false. 15 add(boton3). Al final del método se debe incluir la sentencia return false para no hacer nada en caso de que la acción realizada no tenga interés para nuestra aplicación (línea 4). Si hay más controles del mismo tipo. 27 else if (e. public boolean action(Event nombre_ev. deberemos distinguir uno de otro con más sentencias if dentro de cada if que gestiona el tipo de control (línea 2). listas. el primero es un objeto de la clase Event que recoge el evento producido en el applet. a un método debemos implementar el método action. En dicho método deberemos escribir las acciones que van a realizar cada uno de los controles que tengamos en el applet.Para asociar los controles como botones. boton2. casillas.target instanceof Button) { 22 //comprobar si se pulso boton1 o boton2 23 //no se hara nada si se pulso boton2 24 // En o se guarda el nombre del boton que se pulsó 25 if (e.*.target instanceof Button) { (2) cuerpo con if para cada uno de ese tipo. teniendo en cuenta lo siguiente. 1 //creacion de botones para pulsar 2 import java. 10 boton2 = new Button("Yo no hago nada").toString()). cada uno de estos if deben llevar una sentencia return true para indicar que todo ha ido bien (lineal). 4 public class MisBotones extends Applet 5{ 6 private Button boton1. 12 //agregar botones 13 add(boton1)..awt. 11 boton3 = new Button("Sin rotulo").applet. El método action recibe dos parámetros. 3 import java. Con estos dos objetos lo primero que debemos escribir en el método action son sentencias if para determinar el tipo de control que a producido la acción (línea 1). 7 public void init() 8{ 9 boton1 = new Button("Pulse aqui"). } Ejemplo 10.Applet. 16 } 17 //manejar los eventos de boton 18 public boolean action (Event e. boton3. (3) return true.5 Muestra como usar los botones. Object nombre_obj) { (1)if (nombre_ev..target == boton3) . Object o) 19 { 20 //verificar si un boton disparo el evento 21 if (e. 14 add(boton2). El segundo es un objeto de la clase Object que recoge cual a sido el control que a producido la acción.target == boton1) 26 showStatus ("Usted pulso: "+ o. 11 boton1=new Button("Aceptar"). nombre_objeto. MOSTRAR TEXTO: valido para etiquetas. 27 } 28 return true.showMessageDialog(null.6 1 import java. variable=nombre_objeto.*.equals("Carolina")) 24 JOptionPane. "Contraseña Incorrecta").reshape(x. 12 13 add(rotulo).swing. 32 } 33 } Campos de Texto TextField implementa un área de entrada de texto de una sola línea.getText(). CREACIÓN: TextField nombre_objeto=new TextField(ancho). POSICIONAMIENTO: nombre_objeto. 29 } 30 } . 29 return true. 7 public void init() 8{ 9 rotulo=new Label("Ingrese su contraseña"). //el evento se manejo aqui 30 } 31 return true.y.setText(variable). 16 } 17 public boolean action ( Event e. Object o) 18 { 19 if(e.arg).*.target instanceof Button) 20 if(e. 14 add(text1).target==boton1) 21 { 22 String password=text1. Todo aquello que escribimos en una caja de texto es de tipo String por tanto si queremos realizar operaciones matemáticas deberemos transformarlo a un valor numérico. 3 public class Contrsena extends JApplet { 4 Label rotulo. add(nombre_objeto). 5 Button boton1.awt. 2 import javax.showMessageDialog(null. 23 if(password.alto).28 showStatus ("Usted pulso: "+ e. "Contraseña Correcta"). 15 add(boton1). GUARDAR TEXTO: valido para etiquetas.getText().ancho. 25 else 26 JOptionPane. 6 TextField text1. Ejemplo 10. 10 text1=new TextField(10). reshape(10.addItem("Cuatro").100.Label.reshape(120.Object obj) { if (evento. Button mira=new Button("Mostrar"). lista.addItem("Tres").*.75).40). add(lista).addItem("Dos").reshape(160. lista. eti1. Label eti2=new Label("". add(mira).50). } public boolean action(Event evento.true).*. el orden de sus elementos es según han sido añadidos.50). lista. En este control aparecen unas barras de desplazamiento verticales automáticamente.10.90. eti2. múltiple selección. public class lista extends Applet{ Label eti1=new Label("". List nombre_objeto=new List(0.75.addItem("Uno").LEFT). lista. .addItem("Seis"). add(eti2). lista.reshape(10.LEFT).addItem("Cinco"). List lista=new List(0.31 32 LISTAS Mediante la clase List crearemos el objeto. mira. CREAR: List nombre_objeto=new List(0. EJEMPLO: import java.applet. add(eti1).40. selección simple. lista.40. Los miembros son los mismos que en el control anterior solo cambia el modo de construirlos.true).Label. public void init(){ setLayout(null).getSelectedIndex(). Este tipo de lista puede admite más de una selección.target instanceof Button) { int num=lista.awt.false).10. import java. lista.10. contenedor.setText(cad1).setSelectionMode( ListSelectionModel.getSelectedItem().*. } } EJEMPLO SELECCIÓN MULTIPLE // Cómo import import import copiar elementos de una lista a otra. "Magenta".addActionListener( new ActionListener() { // clase interna anónima // manejar evento de botón public void actionPerformed( ActionEvent evento ) { // colocar valores seleccionados en listaCopia listaCopia. private JButton botonCopiar. // fin de la llamada a addActionListener . "Blanco". "Gris oscuro". contenedor.add( new JScrollPane( listaColores ) ). "Rojo". "Cyan". // eti1. "Verde". "Rosa". public class PruebaSeleccionMultiple extends JFrame { private JList listaColores. // crear botón copiar y registrar su componente de escucha botonCopiar = new JButton( "Copiar >>>" ). java. } } // fin de clase interna anónima ).valueOf(num).setText(cad2). listaColores. // int num1=lista.*.valueOf(num1). "Amarillo" }. eti2.setVisibleRowCount( 5 ).event. javax.MULTIPLE_INTERVAL_SELECTION ).setText(cad2). String cad2=String.countItems(). return true.awt. "Gris claro".setListData( listaColores. "Gris". listaCopia. java.swing.getSelectedValues() ). "Azul". eti1. private final String nombresColores[] = { "Negro". // obtener panel de contenido y establecer su esquema Container contenedor = getContentPane(). "Naranja". listaColores.*. // String cad2=String.setLayout( new FlowLayout() ). // establecer objeto JList listaColores listaColores = new JList( nombresColores ). } return false. // configurar GUI public PruebaSeleccionMultiple() { super( "Listas de selección múltiple" ).awt.String cad1=lista. botonCopiar. private JRadioButton botonSimple.setDefaultCloseOperation( JFrame.*. contenedor. listaCopia. utilizando ButtonGroup y JRadioButton. import javax. 130 ).add( botonCursiva ). botonNegritaCursiva = new JRadioButton( "Negrita/Cursiva". // obtener panel de contenido y establecer su esquema Container contenedor = getContentPane(). true ). botonCursiva = new JRadioButton( "Cursiva".setSelectionMode( ListSelectionModel. tipoLetraCursiva.setLayout( new FlowLayout() ).add( botonSimple ).awt. contenedor.setFixedCellWidth( 100 ). } } // fin de la clase PruebaSeleccionMultiple PROGRAMA RADIOBUTTON // Creación de botones de opción.add( botonCursiva ). // establecer JTextField campo = new JTextField( "Observe cómo cambia el estilo del tipo de letra".swing. listaCopia. 30 ). aplicacion. botonCursiva. contenedor. // crear botones de opción botonSimple = new JRadioButton( "Simple".EXIT_ON_CLOSE ). // crear relación lógica entre objetos JRadioButton grupoBotonesOpcion = new ButtonGroup().*.setVisibleRowCount( 5 ).SINGLE_INTERVAL_SELECTION ). grupoBotonesOpcion.awt.add( botonSimple ). private Font tipoLetraSimple. import java. tipoLetraNegritaCursiva. } // fin del constructor PruebaSeleccionMultiple public static void main( String args[] ) { PruebaSeleccionMultiple aplicacion = new PruebaSeleccionMultiple(). private ButtonGroup grupoBotonesOpcion.contenedor. // establecer objeto JList listaCopia listaCopia = new JList( ). contenedor. contenedor. setVisible( true ). contenedor. setSize( 325.setFixedCellHeight( 15 ). false ). tipoLetraNegrita. false ). grupoBotonesOpcion. import java.add( botonNegritaCursiva ). contenedor.add( botonNegrita ). listaCopia.add( botonCopiar ). grupoBotonesOpcion. public class PruebaBotonOpcion extends JFrame { private JTextField campo.event.*. botonNegrita. . false ). // crear GUI y tipos de letra public PruebaBotonOpcion() { super( "Prueba de RadioButton" ). botonNegrita = new JRadioButton( "Negrita".add( new JScrollPane( listaCopia ) ).add( botonNegrita ). listaCopia. botonNegritaCursiva.add( campo ). addItemListener( new ManejadorBotonOpcion( tipoLetraCursiva ) ). aplicacion.ITALIC.addItemListener( new ManejadorBotonOpcion( tipoLetraNegritaCursiva ) ). } // fin del constructor de PruebaBotonOpcion public static void main( String args[] ) { PruebaBotonOpcion aplicacion = new PruebaBotonOpcion().EXIT_ON_CLOSE ). } // manejar eventos de botón de opción public void itemStateChanged( ItemEvent evento ) { campo. botonNegritaCursiva. public ManejadorBotonOpcion( Font f ) { tipoDeLetra = f. 14 ).addItemListener( new ManejadorBotonOpcion( tipoLetraSimple ) ). // crear objetos de tipo de letra tipoLetraSimple = new Font( "Serif".addItemListener( new ManejadorBotonOpcion( tipoLetraNegrita ) ). 14 ).setDefaultCloseOperation( JFrame. 14 ). campo. } // clase interna privada para manejar eventos de botón de opción private class ManejadorBotonOpcion implements ItemListener { private Font tipoDeLetra. botonCursiva. } } // fin de la clase interna privada ManejadorBotonOpcion } // fin de la clase PruebaBotonOpcion .ITALIC. tipoLetraNegrita = new Font( "Serif". Font. Font. setSize( 350.BOLD. Font.setFont( tipoDeLetra ). botonNegrita. tipoLetraCursiva = new Font( "Serif".setFont( tipoLetraSimple ). Font. // establecer tipo de letra inicial // registrar eventos para objetos JRadioButton botonSimple. tipoLetraNegritaCursiva = new Font( "Serif". setVisible( true ).PLAIN. 100 ).add( botonNegritaCursiva ). 14 ).grupoBotonesOpcion.BOLD + Font.