Você está na página 1de 35

Practicas Netbeans

Operaciones Calculadora Basica:
















PRACTICA CALCULO DEL SALARIO BASICO











crear-una-base-de-datos-mysql-con-un-script-de-sql















guia-practica-condicionales-en-java-con-netbeans-02
Proyecto BoletoPago












http://www.lawebdelprogramador.com/codigo/Java/index1.html
El proyecto.
Necesitas:

Java, obvio no :D
un IDE, yo utilizo Netbeans 6.0
el API de Java Media Framework
15 minutos de tu tiempo

Creando la Interfaz

1. Crea un nuevo proyecto en Netbeans y aade un JFrame: reproductor, a este jframe aade un Menu,
un JSlider , dos jButton y un label en la parte inferior, trata de que te quede como en la imagen de abajo


El reproductor

2. Crea una nueva clase y llamala mp3.java, esta clase es la encargada de trabajar con los archivos MP3.
El codigo necesario esta aqui:



import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import java.util.Timer;
import javax.swing.*;
import java.awt.*;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
* @web http://jc-mouse.blogspot.com/
* @author Mouse
*/
public class mp3{
//el player
private Player mediaPlayer;
//animacion
private Timer tiempo ;
private TimerTask task;
private int speed = 1000;//velocidad
private int frame=0;
//control
boolean run = false;
boolean todo_ok = false;
//archivo
URL mediaURL=null;
String file="";
//otros
String t=null;
//filtro
private static FileNameExtensionFilter filter = new
FileNameExtensionFilter("Archivo MP3","mp3","mp3");

//el constructor vacio
public mp3() {}
/* controles de reproduccion */
public String STOP(){
//comprueba que el reproductor tenga un archivo
if (todo_ok){
mediaPlayer.stop();
this.todo_ok=false;
this.run=false;
this.file="";
this.stopAnimation();
}
return "Reproductor mp3 - by Mouse";
}

/* Reproduce un archivo mp3, si no encuentra ninguno devuelve
un string vacio */
public String PLAY(JSlider b){
t ="No existe ningun archivo...";
if (todo_ok){
if(!run){//si ya se esta reproduciendo
mediaPlayer.start();
this.run=true;
t="Reproduciendo";
this.startAnimation(b);
}
}
return t;
}

//para la animacion
public void startAnimation(final JSlider b) {
if (todo_ok) {
tiempo = new Timer();
task = new TimerTask() {
public void run() {
//calculamos el tiempo de la animacion por 100%
frame = (int)
Math.round((mediaPlayer.getMediaTime().getSeconds() *
100)/mediaPlayer.getDuration().getSeconds());
//cuando ambos sean iguales quiere decir que el video a
alcanzado el final de la reproduccion
if(mediaPlayer.getMediaTime().getSeconds() ==
mediaPlayer.getDuration().getSeconds()){
frame=100; // 100%
STOP();//SE DETIENE Y DESTRUYE EL MEDIA PLAYER
}
else // sino
{
// se actualiza el nuevo valor del Slider
b.setValue(frame);
//Porcentaja de reproduccion
System.out.println("Tiempo de reproduccion: " + frame +
"% de 100%");
}
}
};
//se inicia la animacion
tiempo.schedule(task,0,speed);
}
}

//detiene la animacion
public void stopAnimation() {
tiempo.cancel();
task.cancel();
}

/* Metod que muestra una ventana de dialgo para aadir "archivos" al
reproductor
* hace uso del metodo anterior "setvideo"
*/
public String Abrir_mp3(){
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);
int result = fileChooser.showOpenDialog(null);
if ( result == JFileChooser.APPROVE_OPTION ){
try {
//si se esta reproduciendo un mp3, se detiene
if(todo_ok){this.STOP();}
//se asigna a mediaURL el archivo de video seleccionado
URL url = fileChooser.getSelectedFile().toURL();
//se coloca el nombre de la cancion en la variable file
this.file= fileChooser.getSelectedFile().getName();
//se asigna el mp3 al reproductor
mediaPlayer = Manager.createRealizedPlayer( url );
//se coloca a true
this.todo_ok=true;
}
catch (NoPlayerException ex) {
Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
} catch (CannotRealizeException ex) {
Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
}
}
return "Reproductor mp3 - " + this.file;
}
}

Explicacion: Como se ve en el codigo, este reproductor tiene los controles basicos para reproducir PLAY
y detener STOP el archivo mp3, ademas unos metodos para animar el jSlider y asi ver el avance en la
reproduccion, el metodo Abrir_mp3(); te presenta una ventana de dialogo para que puedas buscar tu
archivo MP3 y reproducirlo, todo esto desde una interfaz grafica. El codigo esta bastante comentado.

3. Ahora para implementar este codigo en la interfaz, debes hacer lo siguiente:
Creas una instancia a nuestra clase mp3.java y aades los metodos a sus controles correspondientes.


private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
//abrir mp3
this.setTitle(mimp3.Abrir_mp3());
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
//dale play
jLabel1.setText(mimp3.PLAY(jSlider1));
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
//detener
this.setTitle(mimp3.STOP());
jLabel1.setText("Detenido");
}
// instancia a la clase mp3.java
mp3 mimp3 = new mp3();

Y eso es todo, aqui puedes ver el reproductor funcionando

https://www.youtube.com/watch?v=xjGTuFRPnOg#t=150

3 en raya java con MVC y Netbeans
Basta de teoria y tratemos de implementar este en una aplicacin GUI de Java con
el IDE de netbeans, existen ejemplos sobre este patron y java en aplicacin Web,
pero encontre pocos y la mayoria en ingles sobre este modelo orientado a GUI,
pero eso no quiere decir que no se pueda, Java cuenta con sus propias
herramientas para implementar MVC, por ejemplo Observer y Observable, pero en
esta ocasin nosotros no haremos uso de ellas.
El proyecto.
1. Creamos un nuevo proyecto en Netbeans siguiendo la estructura MVC, creamos
un paquete para cada uno de ellos, una carpeta Controlador, otra Vista y una ms
para el Modelo.
2. Comenzando por la interfaz, creamos un JFrame con 9 botones, estos los
ordenamos utilizando un GridLayout en una matriz 33, renombramos cada boton
con el nombre casilla1, casilla2 y asi sucesivamente, ahora lo importante,
Netbeans crea los objetos como PRIVATE, esto no nos sirve, entonces selecciona
todos los botones y dirigete a sus propiedades, clic derecho PROPIEDADES, en la
pestala CODIGO, busva la opcin Modificadores de Variable, entonces eliges la
opcion PUBLIC y le das a aceptar. Si no sabes como hacer esto, fijate en el video
que esta al final del post.
El nombre de la vista es interfaz.java.
3. Crea una nueva clase en el paquete Modelo, llamalo juego.java, es ahi donde
colocamos la logica del juego 3 en Raya, el codigo es el siguiente:
package modelo;
/**
* @web www.jc-mouse.net/
* @author Mouse
*/
public class juego {

private byte turno = 1;//1=>jugador 1 2=> jugador 2
private String marca_X = "X";
private String marca_O = "O";
private boolean error=false;//por si se produce algun mensaje
private byte ganador_es=0;//1=>jugador 1 2=> jugador 2 3=>Empate
//matriz para almacenar los movimientos del juego
private String tablero[][] ={{"","",""},
{"","",""},
{"","",""}
};

public juego(){}

//reinicia los valores y limpia el tablero
public void Jugar_otra_vez()
{
for ( int i = 0 ; i < tablero.length ; i++ )
for ( int j = 0 ; j < tablero.length ; j++)
tablero[i][j]="";
this.error=false;
this.ganador_es=0;
this.turno=1;

}
//dado una posicion y segun el turno que corresponda
//coloca la marca "X" o "O" en el tablero
//Salida: La marca que se coloco en la matriz
public String set_movimiento(int posicion)
{
String out="";
if(turno==1)
{
out = marcar(posicion , this.marca_X);
//si no se pudo marcar => continua con su turno
turno = 2;
if ( gano(this.tablero, this.marca_X) )
this.ganador_es=1;
else if ( empate() )
this.ganador_es=3;
}
else
{
out = marcar(posicion , this.marca_O);
turno = 1;
if ( gano(this.tablero, this.marca_O) )
this.ganador_es=2;
else if ( empate() )
this.ganador_es=3;
}
return out;
}
/* MARCA LA CASILLA CON EL MOVIMIENTO DEL JUGADOR, */
private String marcar(int Posicion, String value)
{
String marca="";
switch (Posicion)
{
case 1:marca = sub_marcar(0,0,value); break;
case 2:marca = sub_marcar(0,1,value); break;
case 3:marca = sub_marcar(0,2,value); break;
case 4:marca = sub_marcar(1,0,value); break;
case 5:marca = sub_marcar(1,1,value); break;
case 6:marca = sub_marcar(1,2,value); break;
case 7:marca = sub_marcar(2,0,value); break;
case 8:marca = sub_marcar(2,1,value); break;
case 9:marca = sub_marcar(2,2,value); break;
}
return marca;
}

//funcion privada que sigue a funcion marcar, esto para no repetir codigo
//si al marcar en la matriz , existe algun error, coloca la bandera a TRUE
private String sub_marcar(int x, int y, String value)
{
String marca="";
this.error=false;
if( this.tablero[x][y].equals("") ) //se puede marcar
{
this.tablero[x][y] = value;
marca = value;
}
else//ya esta marcado
{
marca = this.tablero[x][y];
this.error=true;//Error=>se trata de marcar casilla ya marcada
}
return marca;
}

public boolean get_error()
{
return this.error;
}

public String get_turno()
{
return (this.turno==1)? "Turno: X":"Turno: O";
}

public byte ganador()
{
return this.ganador_es;
}

//funcion que determina quien gano la partida
public boolean gano( String matriz[][], String marca )
{
//busqueda de ganador por filas
for ( int i = 0 ; i < matriz.length ; i++ )
{
byte count=0;
for ( int j = 0 ; j < matriz.length ; j++)
count+=( matriz[i][j].equals(marca) )?1:0;
if( count == 3)
return true;
}
//busqueda de ganador por columnas
for ( int j = 0 ; j < matriz.length ; j++ )
{
byte count=0;
for ( int i = 0 ; i < matriz.length ; i++)
count+=( matriz[i][j].equals(marca) )?1:0;
if( count == 3)
return true;
}
//diagonales
if( matriz[0][0].equals(marca) && matriz[1][1].equals(marca) &&
matriz[2][2].equals(marca) )
return true;

if( matriz[0][2].equals(marca) && matriz[1][1].equals(marca) &&
matriz[2][0].equals(marca) )
return true;

return false;
}

//Funcion que determina si se puede continuar jugando
private boolean empate()
{
for ( int i = 0 ; i < tablero.length ; i++ )
for ( int j = 0 ; j < tablero.length ; j++)
if( tablero[i][j].equals(""))
return false;
return true;
}

}
Como ves, es un juego sencillo y no necesitamos de otras clases ni de base de
datos, aunque si asi fuera, las demas clases y la persistena se colocan en esta
carpeta.
4. Toca el turno del Controlador, crea una clase en este paquete y
llamalo controlador.java(que original no), esta clase nos permite la interaccin entre
la Vista y el Modelo, aunque en ocasiones la vista puede recuperar datos del
modelo directamente o viceversa, eso ya depende del programador. El codigo es el
siguiente:
package controlador;
import modelo.juego;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import vista.interfaz;
/**
* @web www.jc-mouse.net/
* @author Mouse
*/
public class controlador implements ActionListener {

private interfaz vista;
private juego juego;
private String titulo = "3 en Raya MVC * jc-mouse.net ";

//En el constructor inicializamos nuestros objetos
public controlador( interfaz vista , juego modelo){
this.vista = vista;
this.juego = modelo;
}

//Inicia los valores del jFrame VISTA con los datos del MODELO
// tambien aadimos el ActionListener a los botones de la VISTA
public void iniciar_vista(){
vista.setTitle( this.titulo );
vista.setLocationRelativeTo(null);
this.vista.casilla1.addActionListener(this);
this.vista.casilla2.addActionListener(this);
this.vista.casilla3.addActionListener(this);
this.vista.casilla4.addActionListener(this);
this.vista.casilla5.addActionListener(this);
this.vista.casilla6.addActionListener(this);
this.vista.casilla7.addActionListener(this);
this.vista.casilla8.addActionListener(this);
this.vista.casilla9.addActionListener(this);
}

//La accion de los botones de la VISTA es capturado, asi como los valores
//dependiendo del boton pulsado, se envia la informacion al modelo
//y se espera la respuesta
public void actionPerformed(ActionEvent e) {
Object boton = e.getSource();

if( this.juego.ganador()== 0 )
{
if( boton == this.vista.casilla1 )
this.vista.casilla1.setText( this.juego.set_movimiento(1) );
else if(boton == this.vista.casilla2)
this.vista.casilla2.setText( this.juego.set_movimiento(2) );
else if(boton == this.vista.casilla3)
this.vista.casilla3.setText( this.juego.set_movimiento(3) );
else if(boton == this.vista.casilla4)
this.vista.casilla4.setText( this.juego.set_movimiento(4) );
else if(boton == this.vista.casilla5)
this.vista.casilla5.setText( this.juego.set_movimiento(5) );
else if(boton == this.vista.casilla6)
this.vista.casilla6.setText( this.juego.set_movimiento(6) );
else if(boton == this.vista.casilla7)
this.vista.casilla7.setText( this.juego.set_movimiento(7) );
else if(boton == this.vista.casilla8)
this.vista.casilla8.setText( this.juego.set_movimiento(8) );
else if(boton == this.vista.casilla9)
this.vista.casilla9.setText( this.juego.set_movimiento(9) );
if( this.juego.get_error())
JOptionPane.showMessageDialog(null, "Error: la casilla ya esta marcada \n
Perdiste tu turno");

this.vista.setTitle( this.titulo + this.juego.get_turno());

}

if( this.juego.ganador()== 1 )
mensaje(" 'X' ");
else if( this.juego.ganador()== 2 )
mensaje(" 'O' ");
else if( this.juego.ganador()== 3 )
mensaje(" 'Es un empate' ");
}

//dependiendo de la respuesta del modelo, se muestra un mensaje al usuario
private void mensaje(String s)
{
int seleccion = JOptionPane.showOptionDialog(null,"Gano el jugador " + s +
"\n Que desea hacer?", "Fin del juego",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, // null para icono por defecto.
new Object[] { " Jugar otra vez ", " Salir de Programa " },
"Jugar otra vez");

if (seleccion != -1)
if( (seleccion+1)==1 )
{
this.juego.Jugar_otra_vez();
this.vista.setTitle(titulo);
this.vista.casilla1.setText( "" );
this.vista.casilla2.setText( "" );
this.vista.casilla3.setText( "" );
this.vista.casilla4.setText( "" );
this.vista.casilla5.setText( "" );
this.vista.casilla6.setText( "" );
this.vista.casilla7.setText( "" );
this.vista.casilla8.setText( "" );
this.vista.casilla9.setText( "" );
}
else
System.exit(0);
}
}
5. muy bien, ya vamos terminando, fijate que no escribimos nada de codigo en la
clase interfaz
Para terminar debemos escribir un poco de codigo en la clase MAIN, el cdigo es:
package mvc3nraya;

import vista.interfaz;
import controlador.controlador;
import modelo.juego;
/**
* @web www.jc-mouse.net/
* @author Mouse
*/
public class Main {

public static void main(String[] args) {
//nuevas instancias de clase
juego modelo = new juego();
interfaz vista = new interfaz();
controlador controlador = new controlador( vista , modelo );
controlador.iniciar_vista();
vista.setVisible(true);
}
}
En la clase Main, lo que hacemos es crear instancias de nuestros objetos pasando la
Vista y el Modelo al Controlador, y despues lanzamos la interfaz al usuario y eso
es todo. Ejecuta el juego y revisa que todo este bien.
https://www.youtube.com/watch?v=nqdftTamsJ0