domingo, 24 de mayo de 2009

Diagrama de barras en JSP

Este es parecido al anterior es un poquito mas complejo, para esto debemos conocer:
1) la estructura de una aplicacion JSP. 2)entender lo que es un Servlet y como se usa.
lo importante del primer punto es que en toda aplicacion JSP hay una carpeta WEB-INF, weno dentro de esta creamos un archivo llamado web.xml, los archivos xml lo usaremos para definir variables o parametros...
esta es la estructura del archivo web.xml

<web-app>

<servlet>
<servlet-name>Imagen</servlet-name>
<servlet-class>jfc.Imagen</servlet-class>
</servlet>

<servlet-mapping>

<servlet-name>Imagen</servlet-name>
<url-pattern>/servlet/Imagen</url-pattern>
</servlet-mapping>
</web-app>

Definiendo el servlet:
<servlet> // esta es una etiqueta como en html para declarar un serlet
<servlet-name>Imagen</servlet-name> Imagen //este es el nombre del servlet
<servlet-class>jfc.Imagen</servlet-class> jfc.Imagen// y esta es la direccion de la clase
</servlet>// cerramos el servlet
el nombre es la forma como lo llamaremos
y la clase es la direccion completa de la clase
osea paquete1.paquete2.paquete3.Claase
Haciendo el mapeo:
<servlet-mapping>
<servlet-name>Imagen</servlet-name>
<url-pattern>/servlet/Imagen</url-pattern>
</servlet-mapping>
</web-app>
Imagen el nombre del Servlet debe ser el mismo que escribimos en la etiqueta sevlet
/servlet/Imagen el camino esto hace referencia a la forma como lu llamaremos dentro de la pagina jsp weno con eso hemos terminado con el web.xml ahora creamos una clase pues como halla arriba dijimos que se llamaba Imagen y estaba en el paquete jfc aqui esta el codigo:

package jfc;
import java.io.IOException;
 import java.io.OutputStream;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jfree.chart.ChartFactory;
 import org.jfree.chart.ChartUtilities;
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.plot.PlotOrientation;
 import org.jfree.data.category.DefaultCategoryDataset;
public class Imagen extends HttpServlet {
public Imagen() {}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
 doGet(request,response);
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
 OutputStream out = response.getOutputStream();
 try {
 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 int i = 0;
 for (i = 0; i<15;i++){
 dataset.addValue((int)(Math.random()*100) , "Ventas", ""+i);
 }
 JFreeChart chart = ChartFactory.createBarChart("Tabla de Ventas", "Fecha", "Cantidad", dataset, PlotOrientation.VERTICAL, true, true, true);
 response.setContentType("image/png");
 ChartUtilities.writeChartAsPNG(out, chart, 700, 400);
 }catch (Exception e) {
 System.err.println(e.toString());
 } finally {
 out.close();
 }
 }

 }


Esto es parecido a lo que hemos hecho anteriromente pero ahora temenos:
1) extends HttpServlet //extedemos de HttpServlet
2) public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request,response);
}
3) public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {.....
4) creamos el diagrama ya he explicado eso en otro entrada 5)OutputStream out = response.getOutputStream(); sacamos la salida 6)response.setContentType("image/png"); decimos que pondremos una imagen png
7)ChartUtilities.writeChartAsPNG(out, chart, 700, 400); y escribimos el char en la salida la salida es una pagina nueva que será escrita asi como se escriben imagenes se puede escribir lo que sea
el resto es la interfaz una pagina jsp que llame a el servlet

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Ejemplo JFreeChar JSP</title> </head> <body> <a href="servlet/Imagen">imagen</a> </body> </html>

debe verse así

sábado, 23 de mayo de 2009

Diagrama de barras en java

Bueno para generar diagramas de barras partes y toda clase de diagramas de estadísticas existe esta API JFreeChart y la puedes descargar aquí la imagen generada es esta así se debe ver la ventana el código es este (descargalo aqui)
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import java.awt.Dimension;
import javax.swing.*;
import java.io.File;


public class VentanaDiagrama extends JFrame {

public VentanaDiagrama(){
//Un DataSet es donde guardamos los datos
//que luego graficaremos
// en este caso usaremos DefaultCategoryDataset
//aunque hay muchos mas
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
DefaultCategoryDataset datasetArchivo = new DefaultCategoryDataset();
String equipos[]={"Emena","Gacellas","","MMC","R4"};
Integer i = 0;
for (i = 0; i<=equipos.length-1;i++){    
   int g=(int)(Math.random()*10);    
   int e=(int)(Math.random()*10);
   int p=(int)(Math.random()*10);
   //agregarValor   valor,categoria,elemento    dataset.addValue(g, "Ganados", equipos[i] );
   dataset.addValue(e, "Empatados", equipos[i]);    dataset.addValue(p, "Perdidos", equipos[i]);
   //utilizamos 2 dataset para guardar la misma informacion abajo explicacion
   datasetArchivo.addValue(g, "Ganados", equipos[i]);    datasetArchivo.addValue(e, "Empatados", equipos[i]);    
   datasetArchivo.addValue(p, "Perdidos", equipos[i]);   }   /*Aqui es donde convertimos esos datos que tenemos en el dataset en un driagrama o mejor dicho en un JFreeChart*/
   JFreeChart chart = ChartFactory.createBarChart("Tabla de Equipos", "Equipos", "Partidos", dataset, PlotOrientation.HORIZONTAL, true, true, true);
   /*JFreeChart chart = ChartFactory.createBarChart(titulo de la tabla, nombre de la categoria, nombre de los valores, dataset, orientacion, leyendas, tooltips, URLs);*/
   /*luego que lo convertimos en un diagrama bueno aun no lo podemos mostrar asi que en
   *este paso lo convertimos en un ChartPanel esto si es un componente visual*/
   ChartPanel chartPanel = new ChartPanel(chart, false);
   /*le damos un tamaño chartPanel.setPreferredSize(new Dimension(500, 500));*/
   chartPanel.setPreferredSize(new Dimension(500, 500));
   setContentPane(chartPanel);
   //esto es para pegarlo a la ventana   pack();   setVisible(true);
   //mostramos la ventana   
   try {    
      /*estas lineas que estan dentro de try son para generar un JPEG apartir de los datos en el     *dataset, pero si se usa el msmo por alguna razon que no comprendo se proboca un error usen el mismo en los dos y lo vetan*/    
      JFreeChart chartArchivo= ChartFactory.createBarChart("Tabla de Equipos", "Equipos", "Partidos", datasetArchivo, PlotOrientation.HORIZONTAL, true, true, true);
      /*aqui es donde generamos el archivo jpeg*/
      ChartUtilities.saveChartAsJPEG(new File("imagen.jpeg"),chartArchivo,this.getHeight(),this.getWidth());   
   }catch (Exception ex) {
      /*si ocurre algun error lo mostramos por aqui*/
   System.out.println (ex);   
   }
}

public static void main (String[] args) {   new VentanaDiagrama();  } }

jueves, 21 de mayo de 2009

GlassPane en java

Bueno el GlassPane en java es algo relativamente sencillo pero para que es???? buen el GlassPane es cuando tu tienes una venta y no quieres que la toquen por ejemplo necesitas pedir unos datos y no quieres que toquen una ventana principal mientras no se han digitado los datos pues hay usas GlassPane... aquí esta el código hay 1 ejemplo un poco difícil pues hay unas clases que no deberían estar pero están solo para adornar todo para darle belleza pero el que tenga dudas que no dude en preguntarme que le pongo algo mas sencillo o simplemente le explico donde tenga la duda descargatelo aqui Ahora se ejecuta la que dice Auxiliar.java la ventana a la cual estamos evitando el acceso es a Principal, el GlassPane es el cuadro oscuro de puntas redondas que esta delante y la ventana la cual queremos llenar los datos es la ventana de Login

jueves, 14 de mayo de 2009

la mejor libreria para JavaScript

Bueno en mi experiencia que es muy muy poca con aplicaciones web y con lo de javascript y todo eso de AJAX y esas cosas bueno partiendo de que ZONA-CARTAGENA es JAVA al hablar de aplicaciones web estoy hablando de JSP + JAVASCRIPT + HTML + CSS y nada mas, la librería la cual voy a promocionar y a venderles es la ExtJS la cual nada mas y nada menos acaba de lanzar su tercera versión y esta barbara, yo no pude hablar de aplicaciones web hasta que conocí esta librería osea te sorprenderías al ver lo que se puede hacer con ella (míralo aquí) el ejemplo con el que me tramo fue con este Pero para trabajar con esta librería en JSP necesitas conocer JSon eso no es que sea difícil. bueno aqui hay unas foticos de lo que se puede hacer con la nueva versión que aun esta en periodo de prueba. yo por hay tengo varios ejemplos si algo los monto por aca

miércoles, 13 de mayo de 2009

Usa IDE's según tu conocimiento

El uso de IDE's como Netbean, JBuilder, ect... los cuales tu haces un par de clicks y ellos te generan una cantidad inmensa de código, es para gente que sabe que es ese código, ademas internamente estos IDE's usan XML y usan archivos de configuración mi recomendación es que si no sabes lo que es no lo uses, ahora si ya sabes como hacer todas esas cosas por ti mismo da igual aprende desde cero... aprende de verdad... JCreator o mejor aun Bloc de notas. FANÁTICO DE JCREATOR

martes, 12 de mayo de 2009

Laberinto y 8 Reinas

El laberinto es un juego donde debes poner casillas negras entre la casilla 1,1 y la casilla n,n de una matriz y el programa te dará una cantidad x de caminos entre estas 2 posiciones hay una casilla donde aparece un numero al lado hay dos flechitas una que sube y una que baja hay podrás ir observando cuales caminos encontró el programa. no puedes dejar muchas casillas en blanco por que se demorará mucho procesando la información El juego de las 8 Reinas es algo parecido en la forma de presentación pero esta ya es mas famoso este se trata de acomodar 8 reinas en un cuadro de ajedrez tu pones la primera reina y el código se encarga de poner las otras siete descarga los códigos aqui

JDomino

Bueno aquí dejo este juego de domino, el cual AUN ESTA EN ETAPA DE DESARROLLO, pero quise compartirlo para que la gente vea lo juegue y lo critique descargalo AQUI Instrucciones: * pide un nombre o lo que sea escribe lo que sea para que puedas jugar. * dale click en jugar. * cuando sea tu turno escoge cualquiera de tus fichas y arrástrala hasta donde quieras ponerla, (el borde se pondrá rojo cuando puedas soltarla). * si no tienes fichas para jugar click en pasar. * si quieres volver a jugar clic en repartir y empieza otra vez; gente espero le guste

lunes, 11 de mayo de 2009

Que es un metodo

Un método y no quiero complicarles la vida es un pedazo de código que se ejecuta cuando nosotros lo llamamos, los métodos tienes una estructura o una forma de escribirlos y es la siguiente:

public void setNumero1(int n1){

numero1=n1;

}

donde public es el tipo de acceso, éste puede ser:

public: el método puede ser llamado por cualquier clase.

private: el método solo puede ser llamado por la misma clase donde está escrito.

: si no pones ni public ni private ni nada el método puede ser accedido solo desde las clases que estén en el mismo paquete o package, paqute se refiere a la carpeta donde están las clases, osea si yo todas mis clases esta una carpeta que se llama misClases solo las clases que esten hay pordran llamar aun metodo al cual no se le especifica el nivel de acceso.

public void setNumero1(int n1){

numero1=n1;

}

void hace referencia al dato que se retorna osea que el el método que en su dato de retorno tiene void quiere decir que no retorna nada.

este puede ser de un tipo de dato basico ya sea

int

double

boolean

char

float

por ejemplo

public int sumar(){

resultado=numero1+numero2;

return resultado;

}

aquí se especifica que este método devuelve un dato de tipo int, cuando el tipo de ato de retorno es diferente de void, entonces se utiliza la linea return

en este metodo se suma numero1 con numero2 y seguarda el resultado en resultado, y seguido se retorna el valor de resultado, el la linea return resultado;

public int sumar(){

resultado=numero1+numero2;

return resultado;

}

El nombre del metodo esto tiene cierta reglas y convenciones

reglas:

* no puede comenzar con un numero o con un carácter raro.

esta mal esto: public void 1ermetodo()

* no puede contener caracteres aritmético-lógicos.

esta mal esto: public void primer-metodo()

* no puede tener ni comas, ni comillas, ni nada de eso.

esta mal esto: public void primer,metodo()

mejor dicho usar los caracteres

desde la a/A (minúscula o mayúscula) hasta la z/Z(minúscula o mayúscula), los numero de 1 hasta 9 y el guion bajo "_".

osea:

public void primer_Metodo()

public void metodo1()

convenciones

* debe comenzar con minúscula.

osea no se escribe public void Primer_Metodo() si no public void primer_Metodo()

* si tiene mas de 2 palabras de la segunda en adelante se escribe con mayúscula inicial.

osea se escribes public void primerMetodo().

el nombre del método debe ser explicito osea debe explicar que es lo que hace el método por ejemplo suma, resta... si vemos esos metodos sabemos que es para sumar, restar, ect.

public void setNumero1(int n1){

numero1=n1;

}

los parametros que recibe esto se define dentro de parentesis por ejemplo este método recibe un parámetro llamado n1 de tipo int

en caso de recibir otro parámetro se beben separar por comas, lo parámetros pueden ser de cualquier clase o dato básico.

creo que con esto ya entiendes lo que es un método...

por ejemplo

public void sumar(int n1,int n2){

System.out.println(n1+n2);

}

Java Que es la clase Java y que es el Objeto

DESGARGA EJEMPLO AQUI Bueno para no complicar mucho este cuento y hablar de las propiedades de lo que es la Programación Orientada a Objetos: Clase es la compilación de tu código java: osea que si tu escribes el código: public class MiClase { public MiClase() { } } lo guardas en un .java osea que te queda un archivo MiClase.java cuando tu compilas ese código que esta en MiClase.java se crea un archivo que quedaria algo como MiClase.class Ese archivo MiClase.class, ese es tu clase. Ahora no tiene sentido una clase que no tenga ni métodos ni variables ni nada, entonces ahora haremos algo mas enfocado para que veas como es que es esto. tenemos el siguiente código: public class Operaciones { int numero1=0; int numero2=0; int resultado=0; public void setNumero1(int n1){ numero1=n1; } public void setNumero2(int n2){ numero2=n2; } public int multiplicar(){ resultado=numero1*numero2; return resultado; } public int dividir(){ resultado=numero1/numero2; return resultado; } public int sumar(){ resultado=numero1+numero2; return resultado; } public int restar(){ resultado=numero1-numero2; return resultado; } } y tenemos este código: public class MiClase { public static void main (String[] args) { Operaciones mi_Objeto_Operaciones=new Operaciones(); int mi_suma=0; int mi_resta=0; int mi_multiplicacion=0; int mi_division=0; mi_Objeto_Operaciones.setNumero1(11); mi_Objeto_Operaciones.setNumero2(7); mi_suma=mi_Objeto_Operaciones.sumar(); mi_resta=mi_Objeto_Operaciones.restar(); mi_multiplicacion=mi_Objeto_Operaciones.multiplicar(); mi_division=mi_Objeto_Operaciones.dividir(); System.out.println ("La suma es "+mi_suma); System.out.println ("La resta es "+mi_resta); System.out.println ("La multiplicacion es "+mi_multiplicacion); System.out.println ("La division es "+mi_division); } } en Operaciones nosotros describimos una clase que tiene 2 variables y 6 métodos. los métodos setNumero1 y setNumero2, son métodos usados para darle valores a las variables numero1 y numero2 respectivamente, el nombre n importa pero pon convención se utiliza el prefijo "set" seguido del nombre de la variable, cada uno de estos métodos recibe un parámetro int (el cual ser asignado ya sea a numero1 o a numero2. el método suma, este método no recibe ningún valor o parámetro pero retorna el valor de la suma de numero1 y numero2. en MiClase tenemos un unico metodo el "main" y aqui creamos un objeto de tipo Operaciones que llamamos mi_Objeto_Operaciones en la linea Operaciones mi_Objeto_Operaciones=new Operaciones(); luego le damos valor a numero1 y numero2 en las lineas mi_Objeto_Operaciones.setNumero1(11); mi_Objeto_Operaciones.setNumero2(7); y luego llamamos los métodos de operaciones(sumar,restar,multiplicar,dividir) y guardamos esos valores en variables mi_suma=mi_Objeto_Operaciones.sumar(); mi_resta=mi_Objeto_Operaciones.restar(); mi_multiplicacion=mi_Objeto_Operaciones.multiplicar(); mi_division=mi_Objeto_Operaciones.dividir(); y por ultimo mostramos los resultados por pantalla System.out.println ("La suma es "+mi_suma); System.out.println ("La resta es "+mi_resta); System.out.println ("La multiplicacion es "+mi_multiplicacion); System.out.println ("La division es "+mi_division); ENTONCES LA CLASE ES EL .CLASS QUE SE CREA CUANDO COMPILAMOS UN .JAVA Y UN OBJETO ES UNA INSTANCIA DE UNA CLASE OSEA CUANDO HACEMOS new Operaciones() ESTAMOS CREANDO UN OBJETO DE LA CLASE OPERACIONES DESGARGA EJEMPLO AQUI

domingo, 10 de mayo de 2009

JAVA DESDE CERO

Ok esto es un pequeño manual de Java el cual ira creciendo poco a poco espero me colaboren para yo colaborar dudad o comentarios abajito esta la ventanita de comentarios o a codigo.java@hotmail.com y empezamos: primero: Necesitas JDK que es el compilador de java lo consigues en: Java JDK Y necesitas un IDE el ide el el programa donde vas a escribir el código yo uso JCreator y este lo consigues aqui: JCreator u otros IDEs NETBEANS ECLIPSE JBUILDER esta clase muestra un mensaje que dice: "Este es mi mensaje" public class Ejercicio1 {//por convención la primera letra en en mayúscula public static void main (String[] args) {//y este método es donde se ejecuta todo System.out.println("Este es mi mensaje");//Esta linea muestra el mensaje } } Clase 2: import javax.swing.JOptionPane; public class Ejercicio2 {//por convención la primera letra en en mayúscula public static void main (String[] args) {//y este método es donde se ejecuta todo JOptionPane.showMessageDialog(null,"Este es mi mensaje");//Esta linea muestra el mensaje } } la diferencia es que una se muestra en el pront y otra se muestra en una pequeña ventana emergente asi como esta descarga los archivos aqui

sábado, 2 de mayo de 2009

Reproducir Audio / Sonido en java

Bueno aqui y como pa salir del paso les traigo este ejemple es lo mas sencillo que pude escribir si hago algo mas sencillo se lo paso NO NECESITA SER UN APPLET!!
aqui esta el codigo usuado
aqui los sonidos estan en la misma carpeta que el class
pero tu lo hace como quiera
import java.applet.AudioClip;
import javax.swing.JApplet;
import java.io.File;
import java.net.URL;
public class CargarAudioYReproducir{
public static void main(String a[] ){
try {
//archivo de audio
File f=new File("welcome.wav");
//lo convertimos a url
URL u=f.toURL();
//Bueno de la AudioClip no se puede instancias por eso esto
AudioClip sonido=JApplet.newAudioClip(u);
//para que suene
sonido.play();
//como el programa se ejecuta muy rapido el audio no se alcanza a escuchar
Thread.currentThread().sleep(5000);
//si fuese una ventana no fuese necesario esa linea
}catch (Exception ex) {
System.out.println (ex);
}
}
}
/***/
ahora aqui hay una clase donde encapsule todo este proceso osea en otras palabras mas papallo:
import java.applet.AudioClip;
import javax.swing.JApplet;
import java.io.File;
import java.net.URL;
public class Audio {
private AudioClip clip=null;
private String dir=null;
public Audio(AudioClip ac) {
clip=ac;
}
public Audio(URL u){
this(JApplet.newAudioClip(u));
dir=u.getPath()+" "+u.getFile();
}
public Audio(File f)throws Exception {
this(f.toURL());
}
public Audio(String d)throws Exception{
this(new File(d));
}
public static Audio getAudioClip(String d){
try {
return new Audio(d);
}catch (Exception ex) {
System.out.println (ex);
}
return null;
}
public void play(){
clip.play();
}
public void stop(){
clip.stop();
}
public void loop(){
clip.loop();
}
public String toString(){
return dir+"\n"+clip.toString();
}
}
COMENTARIOS, DUDAS... SI NO LO DICES NO LO SE