miércoles, 2 de septiembre de 2009

Conexion JSP - MySQL

Bueno en realidad la conexion JSP - MySQL es igual a Java - MySQL.
se hace a traves de un driver que es una biblioteca formato jar (descargalo aqui) la forma de agregar la libreria al path de tu servidor web depende del servidor yo he trabajado con dos servidores el apache y el del net beans (apache tambien pero se configura diferente).
para agregar en apache pues debes conocer la estructura de una aplicacion web
AplicacionWeb
|_WEB-INF
|__classes
|__lib
en la carpeta clases van todas las clases de tu aplicacion dentro de las cuales la de la conexion a base de datos por lo general llamada Model o Modelo
en la carpeta lib debe ir el driver
luego de todo esto, para la conexion en forma puntual en tu clase modelo debes definir un parametro de tipo java.sql.Connection, java.sql.PreparedStatement y un java.sql.ResultSet. Aparte de esto debes tener los parametros de conexion como lo son direccion de la clase driver que sería String driver = "com.mysql.jdbc.Driver"; , la direccion de la base de datos String url = "jdbc:mysql://localhost:3306/base_de_datos"; , y los datos de acceso osea nombre y clave para acceder a la base de datos String nombre = "root"; y String clave = "admin";
y luego con este metodo se haria la conexion
public void conectar() throws SQLException {
if (driver == null) {
throw new SQLException("Driver no cargado");
}
if (url == null) {
throw new SQLException("URL invalida");
}
try {
Class.forName(this.driver);
} catch (ClassNotFoundException ex){
desconectar();
throw new SQLException("Error en la conexion, No cargo el Driver ");
}
co = DriverManager.getConnection(url,nombre,clave);
}

sábado, 11 de julio de 2009

Usando JSON N03 (en ExtJS)

En el lado ExtJS te toca hacer esto
var datosJSP;
var columnas;
var tabla;
var ventana;
Ext.onReady(function(){
/*
Esto es lo realmente importante en el codigo
esto es todo lo nuevo aqui la lectura de dat
os desde un JSON, funciona asi necesitamos u
n Ext.data.Store el cual define 3 parametros
importantes encapsulados en 2 valores el pri
mero es un Ext.data.JsonReader dentro de est
e se define un campo fields: que es un vecto
r que contiene en orden los campos que serán
leidos y un campo root: que define el nombre
de la variable que contiene los datos en el
JSON.
El otro es un campo proxy: este está definid
o por la url donde estan los datos en format
o JSON
*/
datosJSP = new Ext.data.Store({
reader: new Ext.data.JsonReader({
fields: ['nombre', 'apellido','apodo','telefono','correo'],
root: 'rows'
}),
proxy: new Ext.data.HttpProxy({
url: 'servlet/Listar/Contacto'
}),
autoLoad: true
});
/*columnas define datos sobre cada columna de la tabla
por ejemplo:
-header Titulo
-width Ancho
-sortable Si se puede ordenar esta columna
-dataIndex de donde se saca el dato que va en esta columna este campo es de especial cuidado
porque debe ser una variable definida en el JSON
las columnas son una matriz donde cada fila es una columna y a su vez cada espacio de cada fila es una prodiedad de dicha columna
*/
columnas =[
{header: "Nombre", width: 100, sortable: true, dataIndex: 'nombre'},
{header: "Apellido", width: 100, sortable: true, dataIndex: 'apellido'},
{header: "Apodo", width: 100, sortable: true, dataIndex: 'apodo'},
{header: "Telefono", width: 100, sortable: true, dataIndex: 'telefono'},
{header: "Correo", width: 180, sortable: true, dataIndex: 'correo'}
];
/*
un panel de grillas, mejor dicho una tabla
para los que conocen java es como un JTable
pero mucho mas funcional pues proporciona e
l metodo para ordenar y ya es un componente
visual osea no hay que agregarlo a ningun o
tro componente para visualizarlo
*/
tabla = new Ext.grid.GridPanel({
store: datosJSP,
columns:columnas,
stripeRows: true,
height:250,
width:600,
// renderTo: document.body,
title:'Lista::de::Contactos:::...'
});
ventana = new Ext.Window({
id: 'ventana',
title: '1N63N10 5W',
closable:true,
maximizable:true,
minimizable :true,
closeAction :'hide',
height: 270,
width: 620,
plain:true,
layout: 'fit',
items: tabla
});
});

Usando JSON N02 (en el controller)

para trabajar aplicaciones AJAX con ExtJS es necesario usar el MVC, debes crear una clase acciones que lea los datos de la bd y los escriba en un texto ya sea en un "text/javascript" o en un "application/x-json" la clase que yo hice es la siguiente:
package paquetes.controlador;
import paquetes.modelo.Contacto;
import paquetes.modelo.Model;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.RequestDispatcher;
import java.io.PrintWriter;
import org.json.JSONObject;
import org.json.JSONArray;
import org.json.JSONException;
import java.util.ArrayList;
public class ListarContacto extends Action {
public void run()throws ServletException, IOException{
JSONObject respuesta=new JSONObject();
try {
respuesta=aJson();
}catch (Exception ex) {
throw new ServletException(ex.toString());
}
escribir(respuesta);
}
public JSONObject aJson()throws Exception{
JSONObject respuesta=new JSONObject();
JSONArray arreglo=new JSONArray();
try {
Model model= new Model();
ArrayList lista=model.listaContacto();
for (int i = 0; i
arreglo.put(i,Contacto.load(lista.get(i)));
}
}catch (Exception ex) {
respuesta.put("mensaje",ex.toString());
respuesta.put("tipo","Error");
return respuesta;
}
respuesta.put("success",true);
respuesta.put("rows",arreglo);
return respuesta;
}
public void escribir(JSONObject texto)throws IOException{
String cb = request.getParameter("callback");
boolean scriptTag = false;
if (cb != null) {
scriptTag = true;
response.setContentType("text/javascript");
} else {
response.setContentType("application/x-json");
}
PrintWriter out = response.getWriter();
response.getWriter().print(texto);
}
}
lo mas importante es:
en el metodo aJson
JSONArray arreglo=new JSONArray(); creamos un JSONArray y recorremos la lista de objetos o datos traidos de la BD y los guardamos en el array que automaticamente con el metodo que creamos en el bean el lo convierte.
Model model= new Model(); //conexion a la BD
ArrayList lista=model.listaContacto(); //datos de la BD
for (int i = 0; i
arreglo.put(i,Contacto.load(lista.get(i)));//ponemos lo que estaba en la bd en el array
}
respuesta.put("success",true);//y el proceso finalizo correctamente
respuesta.put("rows",arreglo);//ponemos la info en lo que vamos a escribir
en el metodo escribir:
escogemos que tipo de respuesta será si javascript o json, y luego obtenemos el medio para escribir y escribimos.

Usando JSON N01 (en el bean)

Usando JSON (descargalo aki) json de la forma como se trabajo viene en 2 jar, cada uno con determinadas clase, pero lo importante es lo siguiente (ya sabes lo que es un bean?) :
* en tu bean importar estas clases
import org.json.JSONObject;
import org.json.JSONException;
* escribir un metodo para convertir tus datos al formati JSON
public static JSONObject load(Contacto contacto) throws JSONException {
JSONObject respuesta=new JSONObject();
respuesta.put("nombre",contacto.getNombre() );
respuesta.put("apellido",contacto.getApellido() );
respuesta.put("apodo",contacto.getApodo());
respuesta.put("telefono",contacto.getTelefono());
respuesta.put("correo",contacto.getCorreo());
return respuesta;
}
el bean quedaria asi:
package paquetes.modelo;
import java.io.Serializable;
import java.lang.Comparable;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.json.JSONObject;
import org.json.JSONException;
public class Contacto implements Serializable,Comparable{
private String nombre = "";
private String apellido = "";
private String apodo = "";
private String telefono = "";
private String correo = "";
public String getNombre(){
return nombre;
}
public String getApellido(){
return apellido;
}
public String getApodo(){
return apodo;
}
public String getTelefono(){
return telefono;
}
public String getCorreo(){
return correo;
}
public void setNombre(String nombre ){
this.nombre=nombre;
}
public void setApellido(String apellido ){
this.apellido=apellido;
}
public void setApodo(String apodo ){
this.apodo=apodo;
}
public void setTelefono(String telefono ){
this.telefono=telefono;
}
public void setCorreo(String correo ){
this.correo=correo;
}
public String toString(){
return(
"DATOS:::CONTACTO:::...\n"+
"NOMBRE : "+nombre+"\n"+
"APELLIDO : "+apellido+"\n"+
"APODO : "+apodo+"\n"+
"TELEFONO : "+telefono+"\n"+
"CORREO : "+correo+"\n"+
"");
}
public static Contacto load(ResultSet rs) throws SQLException {
Contacto contacto = new Contacto();
contacto.setNombre((String)rs.getString("NOMBRE"));
contacto.setApellido((String)rs.getString("APELLIDO"));
contacto.setApodo((String)rs.getString("APODO"));
contacto.setTelefono((String)rs.getString("TELEFONO"));
contacto.setCorreo((String)rs.getString("CORREO"));
return contacto;
}
public int compareTo(Object contacto){
return (this.nombre).compareTo(((Contacto)contacto).getNombre());
}
public static JSONObject load(Contacto contacto) throws JSONException {
JSONObject respuesta=new JSONObject();
respuesta.put("nombre",contacto.getNombre() );
respuesta.put("apellido",contacto.getApellido() );
respuesta.put("apodo",contacto.getApodo());
respuesta.put("telefono",contacto.getTelefono());
respuesta.put("correo",contacto.getCorreo());
return respuesta;
}
}

viernes, 10 de julio de 2009

Agregando librerias a NetBeans

Para agregra librerias al netbeans, pues es facil en este caso especifico te explico como agregar el JSON( Descargalo aki) cuando tu abres el proyecto web hay unas carpetas, en especifica una que se llama lib o librerias o libraries en esa carpeta le das click contrario y click en agregar jar file o archivo jar y buscas el archivo y listo ya lo puedes importar

jueves, 9 de julio de 2009

JSON

JSON lo que quiere decir es "JavaScript Object Notation", es un "formato" para pasar informacion, es una cuestion bien simple en el formato JSON se puede pasar datos:
campo:valor,campo2:valor
para mas info entra en http://www.json.org/.
JSON es una vaina bien facil de usar comparado a XML en AJAX. La lista de lenguajes soportados incluye ActionScript, C, C#, ColdFusion, Common Lisp, Delphi, E, Eiffel, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, y Lua.

martes, 16 de junio de 2009

Generar un exe de un codigo java

Bueno hay dos formas las cuales he usado y bueno una facil y cara y la otra dificil y gratis.... la primera de las opciones con todo su explendor y brillo directo de Excelsior LLC viene el primer participante llamado Excelsior JET mas productos de esta gente aqui y se ve algo como asi
Bueno esto es click aqui click alla busca esto dime como se llama y listo exe de tu tus java... y ahora viene el otro lado de la moneda... los que han trabajado con linux saben de que les estoy hablando gcc saben lo que es gcc es esa instruccion para que los programas funcionen bueno significa GNU Compiler Collection ahora de la misma gente de GCC sale algo conocido como GCJ tambien conocido como GNU Compiler for Java eso es puro codigo esto es pantalla negra lo que la mayoria de amateurs tememos pantalla negra.... aki les dejo una lista de sitios donde descargarlo http://gcc.gnu.org/mirrors.html y en esta otra http://gcc.gnu.org/onlinedocs/gcj/ esta un "manual" de como usarlo... bien mi gente salgan de JDK ahora es oracle no esperemos que java pierda su libertad pero estamos esperando el cambio.

martes, 9 de junio de 2009

ExtJS+JSP y base de datos

Aquí dejo colgado dos ejemplos: * el primero para almacenar datos en la BD. * el segundo es para acceder a esos datos. descargalos aquí el blog esta en construcción se ampliaran unas cosas por eso se ha evitado hacer entradas pero próximamente, te sorprenderemos

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();
}
}

jueves, 30 de abril de 2009

Conexion java con puerto serial db 25

Bueno esta conexion tambien la hice con la Com32 de la Sun pero por las mismas razones que modifique la libreria del paralelo, Sun no da soporte para Windows por lo menos en este aspecto, bueno aqui les dejo el codigo que use para comunicar el puerto serial o db9 con java enviar y leer datos:
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.List;
import app.Com;
import app.Parameters;
import core.SerialPort;
public class Ventana extends JFrame implements ActionListener{
JLabel labelDato;
private JButton boton;
private Hilo hilo;
public Ventana() {
setLayout(null);
labelDato = new JLabel("...");
boton=new JButton("iniciar");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("...:::PUERTO:::SERIAL:::...");
labelDato.setFont(new Font("Arial", 0, 54));
labelDato.setLocation(10,10);
labelDato.setSize(280,280);
boton.setLocation(10,300);
boton.setSize(280,20);
boton.addActionListener(this);
add(labelDato);
add(boton);
setLocation(300,300);
setSize(300,350);
centrar(this);
setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent evento){
if(boton.getText().matches("iniciar")){
boton.setText("detener");
iniciar();
}else{
boton.setText("iniciar");
detener();
}
}
public void centrar(Component componente){
Toolkit tk=Toolkit.getDefaultToolkit ();
int lx=(int) tk.getScreenSize().getWidth()*1;
int ly=(int) tk.getScreenSize().getHeight()*1;
lx=lx/2-componente.getWidth()/2;
ly=ly/2-componente.getHeight()/2;
componente.setLocation(lx,ly);
}
private void iniciar(){
try {
if(hilo==null){
hilo = new Hilo(this);
hilo.start();
}else{
hilo.resume();
}
}catch (Exception ex) {
System.out.println (ex);
}
}
private void detener(){
try {
hilo.suspend();
labelDato.setText("...");
setTitle("...:::PUERTO:::SERIAL:::...");
}catch (Exception ex) {
System.out.println (ex);
}
}
}
class Hilo extends Thread{
private Ventana ventana;
public Hilo(Ventana ven){
ventana=ven;
}
public void run(){
try {
SerialPort libres = new SerialPort();
List lista = libres.getFreeSerialPort();
if(lista.size()<1){
throw new Exception("NO SE HAN ENCONTRADO PUERTOS DISPONIBLES");
}
String puerto=lista.get(0);
Parameters configuracion = new Parameters();
configuracion.setPort(puerto);
configuracion.setBaudRate("9600");
configuracion.setStopBits("2");
Com com = new Com(configuracion);
int dato=0;
int i=0;
System.out.println("LOG");
while(true){
dato = com.receiveSingleDataInt();
ventana.labelDato.setText( dato +"");
ventana.setTitle("...:::PUERTO:::SERIAL::("+puerto+"):::..."+dato);
System.out.println("lee "+dato);
sleep(100);
com.sendSingleData(i);
System.out.println("env "+i);
i++;
}
}catch (Exception ex) {
System.out.println (ex);
}
}
public void detener(){
ventana.dispose();
ventana=null;
}
}
class Ejecutable{
public static void main(String args[]) {
Ventana v=new Ventana();
}
}
y aqui les dejo los enlaces para descargar la libreria y el codigo:
http://www.4shared.com/file/102621757/a6780501/conexion_java_serial_db9.html
si ese no funciona prueba con este:
http://www.4shared.com/get/102621757/a6780501/conexion_java_serial_db9.html

Conexion de java con el puerto paralelo db 25

Bueno eso ya estaba hecho haciendolo con el API Com32 de la sun.... pero por su guerra de licencias y leyes y eso y lo otro sun HA DEJADO DE DAR SOPORTE A WINDOWS!!!!, nada raro pero en fin entonces hay que utilizar otro metodo para conectarse y es siguiente es usando JNI 
Esto es llamar metodos nativos esos metodos estan dentro de una dll y alguien que sabes mucho, mucho hizo esa vaina y yo lo implemente:
este es mi codigo:
import javax.swing.JOptionPane;
public class Prueba {
    public Prueba(){
     while (true){
     int n=pedirEntero("Digite un numero");
     escribirEnPuerto(n);
     mostrarPuertos();
     }
    }
    
    public int pedirEntero(String msj){
int n=10;
try {
     String _n="";
     _n=JOptionPane.showInputDialog(null,msj);
     n=Integer.parseInt(_n);
     n=Math.abs(n);
     return n;
}catch (Exception ex) {
return pedirEntero(msj);
}
}
public void escribirEnPuerto(int n){
PuertoParalelo pp = new PuertoParalelo();
try {
pp.output((short)888,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
try {
pp.output((short)889,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
try {
pp.output((short)890,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
}
public void mostrarPuertos(){
System.out.println ("Valores en puertos");
PuertoParalelo pp = new PuertoParalelo();
try {
System.out.println ("puerto 888: "+pp.input((short)888));
}catch (Exception ex) {
System.out.println (ex);
}
try {
System.out.println ("puerto 889: "+pp.input((short)889));
}catch (Exception ex) {
System.out.println (ex);
}
try {
System.out.println ("puerto 890: "+pp.input((short)890));
}catch (Exception ex) {
System.out.println (ex);
}
}
public static void main(String args[]){
new Prueba();
    }
    
}
y aqui les dejo la libreria y el codigo:
http://www.4shared.com/get/102617690/f7a09095/comunicacion_con_db25_conexion_java_paralelo.html
si ese enlace no funciona prueba con este:
http://www.4shared.com/file/102617690/f7a09095/comunicacion_con_db25_conexion_java_paralelo.html
ya  con eso funciona
la conexion con la protoboard esta en una entrada mas abajo
COMENTARIOS, DUDAS... SI NO LO DICES NO LO SE