martes, 12 de julio de 2011

Demostración de avance parcial

Bueno tras leer un BUEN rato y platicar con amigos Abraham,Pedro y Obed, avanze lo que hasta ahora llevo ( se que no es mucho, pero es algo ):

Ventana Principal sencilla pero entendible

Codigo:

import javax.swing.*;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.*;

public class Principal extends JFrame
{
//Constructor
public Principal()
{
Container c = getContentPane();
c.setLayout(new FlowLayout());

//Establecer titulo, tamanio y posicion en la ventana
setSize(400,100);
setLocationRelativeTo(null);//centrado
setResizable(false);//no maximizar ni cambiar tamaño

//Crear el boton Agregar
JButton botonAgregar = new JButton("Agregar Archivo");
JPanel panAgregar = new JPanel(new FlowLayout());
panAgregar.add(botonAgregar);

//Crear el boton para abrir el visor
JButton botonVisor = new JButton("Ver Archivos");
JPanel panVisor = new JPanel(new FlowLayout());
panVisor.add(botonVisor);

c.add(panAgregar);
c.add(panVisor);

//Al dar en la X terminar todo el programa
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//------------ACCION DEL BOTON AGREGAR ARCHIVO--------------//
ActionListener ActionAgregar = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
AltaArchivos ejemplo = new AltaArchivos(400,200);
ejemplo.mostrar();
//Ocultar la ventana principal
setVisible(false);
}
};
botonAgregar.addActionListener(ActionAgregar);
//--------FIN DE LA ACCION DEL BOTON AGREGAR ARCHIVO--------//

}//fin del contructor

public void mostrar()//para mostrar la ventana
{
setVisible(true);
}//Fin del metodo mostrar

public static void main( String args[] )
{
Principal ejemplo = new Principal();
ejemplo.mostrar();
}//Fin del main
}//Fin de la clase Principal
Agregar Archivo y mensajes de aviso


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.sql.*;


public class AltaArchivos extends JFrame
{

JTextArea areaRutaImagen; //Para Introducir texto
JTextField textoNombre; //Para introducir datos

private static
Connection con = null; //Variable para la conexion
Statement st; //Consultas

//Constructor
public AltaArchivos( int ancho, int alto )
{
//Ventana
Container ventana = getContentPane();
ventana.setLayout( new FlowLayout() );

setSize(ancho,alto);//tamaño de la ventana
setLocationRelativeTo( null );//Lugar de inicio de la ventana null=centro
setResizable( false );//No cambiar de tamaño, ni agrandar

//(Etiqueta) Titulo de la ventana
JLabel Titulo = new JLabel( "Datos del Archivo" );

//CARacteriticas de la etiqueta titulo
JPanel CARTitulo = new JPanel(new FlowLayout( FlowLayout.CENTER ));
CARTitulo.add(Titulo);
ventana.add( CARTitulo );//Agregar a la ventana

// (Etiqueta) Nombre y su campo de texto para agregar la ruta del archivo
JLabel Nombre = new JLabel( "Nombre: " ); //Nombre de la etiqueta
textoNombre = new JTextField( 20 ); //Espacios totales del campo de texto

//CARacteriticas de la etiqueta nombre
JPanel CARNombre = new JPanel( new FlowLayout( FlowLayout.LEFT ) ); //El FlowLatout sirve para posicionar
CARNombre.add( Nombre );
CARNombre.add( textoNombre );
ventana.add( CARNombre );//Agregar a la ventana

//Crear el boton examinar
JButton botonExaminar = new JButton( "Examinar..." );//Nombre del boton examinar
botonExaminar.addActionListener( new seleccionarImagen() );

//Crear el area de texto para mostrar la ruta absoluta del archivo
JPanel rutaImagen = new JPanel( new FlowLayout( FlowLayout.LEFT ) );
//Metodos de JTextArea
areaRutaImagen = new JTextArea( 2,20 );
areaRutaImagen.setDisabledTextColor( Color.RED );
areaRutaImagen.setLineWrap( false ); //Para tener toda la ruta en una misma linea
areaRutaImagen.setEnabled( false ); //Para desabilitar la 1ra ventana

//Un scroll( barra deslizante )
JScrollPane scrollRutaImagen = new JScrollPane( areaRutaImagen );//crea un Scroll y como parametro la "areaRutaImagen"
scrollRutaImagen.getHorizontalScrollBarPolicy();//Metodo que indica que se posicionara de forma horizontal
rutaImagen.add(scrollRutaImagen);//Es agregado a "areaRutaImagen" para poder ver
//la ruta completa, porque sino solo veriamos una parte
rutaImagen.add(botonExaminar);
ventana.add( rutaImagen );//Agregar a la ventana

//Crear el boton guardar
JButton botonGuardar = new JButton( "Guardar" );
//CARacteriticas del boton guardar
JPanel CARGuardar = new JPanel( new FlowLayout( FlowLayout.CENTER ) );//El FlowLatout sirve para posicionar
CARGuardar.add( botonGuardar );
ventana.add( botonGuardar );//Agregar a la ventana

//Crear el boton cancelar
JButton botonCancelar = new JButton( "Cancelar" );//Nombre del boton cancelar
//CARacteriticas del boton cancelar
JPanel CARCancelar = new JPanel( new FlowLayout( FlowLayout.CENTER ) );//El FlowLatout sirve para posicionar
CARCancelar.add( botonCancelar );
ventana.add( botonCancelar );//Agregar a la ventana


//---------Barra de la ventana----------//
//Para que al dar clic en la x de la esquina de este JFrame
//se muestre por default la ventana principal
this.addWindowListener( new WindowAdapter() //Agrega que el oyente ventana especificada
//para recibir eventos de ventana de la ventana.
{
public void windowClosing( WindowEvent e ) //para no salir de la aplicacion cerrando la ultima ventana
{
Principal ejemplo = new Principal( );
ejemplo.mostrar();
setVisible( false );//ocultar la ventana, si no simpre estaria abierta
}
} );

//-------------Boton cancelar-------------//
ActionListener accionCancelar = new ActionListener()
{
public void actionPerformed( ActionEvent evt )
{
Principal ejemplo = new Principal( );//Crea un objeto de la clase Principal
ejemplo.mostrar();//llama al metodo de la clase Principal
setVisible( false );//ocultar la ventana, si no simpre estaria abierta
}
};
botonCancelar.addActionListener( accionCancelar );

//-------------Boton guardar-------------//
ActionListener accionGuardar = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
//Validar que NO haya campos vacios
if( camposVacios() )//Llama el metodo camposVacios
{
JOptionPane.showMessageDialog( null,"Hay campos vacios. Intenta de nuevo." );
return;
}//Fin del if hayCamposVacios()

if( conectarBaseDatos() )//Llamada al metodo
{
if( altaProducto() )//Llamada al metodo
{
JOptionPane.showMessageDialog( null,"Producto guardado con exito" );
textoNombre.setText("");
areaRutaImagen.setText("");
}//Fin del if altaProducto
else
JOptionPane.showMessageDialog( null,"No se pudo guardar" );
}//Fin del if conectarBaseDatos()
else
JOptionPane.showMessageDialog( null,"No se pudo Conectar la BD" );

}//Fin del metodo actionPerformed
};
botonGuardar.addActionListener( accionGuardar );

}//Fin del costructor


//Conectar a la base de datos
public boolean conectarBaseDatos()
{
try
{
Class.forName( "com.mysql.jdbc.Driver" );
String strCadenaConexion = "jdbc:mysql://localhost/pruebaRuta";
con = DriverManager.getConnection( strCadenaConexion,"root","celeron" );
if ( con == null )
return false;

st = con.createStatement();
return true;
}catch(SQLException sqlex)
{
sqlex.printStackTrace();
return false;
}//Fin del catch SQLException sqlex
catch( Exception e )
{
e.printStackTrace();
return false;
}//Fin del catch Exception e
}//Fin del metodo conectarBaseDatos

//Agrega un archivo a la tabla productos
public boolean altaProducto()
{
try
{
int res = st.executeUpdate( "INSERT INTO " +
"productos(nombre,imagen) VALUES('"+textoNombre.getText()+"','"
+areaRutaImagen.getText()+"')" );
if( res==1 )
return true;

else
return false;

}catch( SQLException sqlex )
{
sqlex.printStackTrace();
return false;
}//Fin del catch SQLException sqlex
catch( Exception e )
{
e.printStackTrace();
return false;
}//Fin del catch Exception e
}//Fin del metodo altaProducto

//Comprueba true si alguno de los 2 campos esta vacios
public boolean camposVacios()
{
if( textoNombre.getText().isEmpty() || areaRutaImagen.getText().isEmpty() )
return true;

return false;
}

//hace visible la ventana
public void mostrar()
{
setVisible( true );
}

//Clase interna
class seleccionarImagen implements ActionListener
{
public void actionPerformed( ActionEvent ae )
{
String archivoSeleccionado;
JFileChooser SeleccionarArchivo = new JFileChooser();
//llama a la calse filtro
SeleccionarArchivo.addChoosableFileFilter( new Filtro() );
//Filtro a usarse por defecto
SeleccionarArchivo.setFileFilter(SeleccionarArchivo.getChoosableFileFilters()[1]);

//abre la ventana abrir
int select = SeleccionarArchivo.showOpenDialog( AltaArchivos.this );
if ( select == JFileChooser.APPROVE_OPTION )
{
File filSeleccionado = SeleccionarArchivo.getSelectedFile();
archivoSeleccionado = filSeleccionado.getAbsolutePath();//metodo para obtener la ruta raiz
//muestra la ruta raiz en la area de texto
areaRutaImagen.setText( archivoSeleccionado );
}//Fin de if retval == JFileChooser.APPROVE_OPTION
}//Fin del metodo actionPerformed
}//Fin de clase interna

}//Fin de la clase

Aun tengo que hacer funcionar el boton Ver Archivos y todos sus complementos, para el jueves pienso tenerlo, saludos

2 comentarios:

  1. Oye nomas una cosa porque tienes una clase demasiado cargada, revisa a ver si la puedes partir en varias para confusiones.

    ResponderEliminar
  2. Te entiendo y talvez te digas esto se puede hacer asi o asa, pero con el nivel de conocimientos en java que tengo ahorita y el corto tiempo para terminarlo, si fue dificil aplicar los conceptos. En libreta todo parecia fasíl solo unas cuantas flechas y "extends", pero a la hora de codificar todo tronaba, por eso decidi hacer casi todo en un clase. Pero no te preocupes asi no se quedara.Gracias por el comentario

    ResponderEliminar