Búsqueda por palabras claves

No se olviden de consultar por palabras claves! Ejemplo de Estructura de datos en java, tutorial de estructura de datos
Búsqueda personalizada
Mostrando entradas con la etiqueta fLayouts java arraylist actionlistener implements eventos java. Mostrar todas las entradas
Mostrando entradas con la etiqueta fLayouts java arraylist actionlistener implements eventos java. Mostrar todas las entradas

jueves, 20 de octubre de 2011

Ejemplo de GUI Java Swing

Para realizar una aplicación con Formultario en java, debemos usar el paquete Swing, para ello debemos saber en terminos generales que disponemos de la clase JFrame (Ventana), misma que tiene un panel por defento, para ello podemos hacer uso del método getContentPane, por otro lado debemos implementar la interfaz ActionListener para poder controlar los eventos que se producen.

El siguiente ejercicio es una pequeña simulación de una aplicación para venta de productos de un tienda de juegos.

El ejercicio está desarrollado en Netbeans, los pasos para generar el proyecto son los siguientes:

1.- Crear un nuevo proyecto tipo Java Aplication. (Para este caso lo he puesto Venta Productos)
2.- Sobre el paquete Creamos la clase Producto  que va permitir almacenar la información de cada juego. El código de la clase es el siguiente:
package ventaproductos;

/**
 *
 * @author Paulo
 */
public class Producto {
    private String nombre;
    private String tamanio;
    private String categoria;
    private int disponibles;
    private double precio;

    public Producto(String nombre, String tamanio, String categoria, int disponibles, double precio) {
        this.nombre = nombre;
        this.tamanio = tamanio;
        this.categoria = categoria;
        this.disponibles = disponibles;
        this.precio=precio;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the tamanio
     */
    public String getTamanio() {
        return tamanio;
    }

    /**
     * @param tamanio the tamanio to set
     */
    public void setTamanio(String tamanio) {
        this.tamanio = tamanio;
    }

    /**
     * @return the categoria
     */
    public String getCategoria() {
        return categoria;
    }

    /**
     * @param categoria the categoria to set
     */
    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    /**
     * @return the disponibles
     */
    public int getDisponibles() {
        return disponibles;
    }

    /**
     * @param disponibles the disponibles to set
     */
    public void setDisponibles(int disponibles) {
        this.disponibles = disponibles;
    }

    /**
     * @return the precio
     */
    public double getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(double precio) {
        this.precio = precio;
    }

}

3.- Sobre el paquete Crear una nueva Clase llamada Ventana. Esta clase debe extender de JFrame e implementar la Interfaz ActionListener. Para organizar la información he decidio usar el Layout en modo GridLayout es decir una matriz de N x M en los cuales todos los elementos tienen el mismo tamaño.

Esto se lo puede ver a continuación.



Uploaded with ImageShack.us

Ahora continuando con la programación en el constructor debemos instanciar los Objetos tipo Producto y agregarlos al Arraylist.



Uploaded with ImageShack.us


En seguida debemos definir el título, dimensiones, layout, etc. es decir la configuración de mi Ventana, además agregamos los componentes al panel.



Uploaded with ImageShack.us


Por último debemos definir el actionListener para los controles de los cuales debemos controlar los eventos e implementar el código del método ActionPerforme.

El Código completo de la Clase ventana es el siguiente:


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ventaproductos;

import com.sun.corba.se.impl.naming.cosnaming.InterOperableNamingImpl;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 *
 * @author Paulo
 */
public class Ventana extends JFrame implements ActionListener {
   
    // Componentes que serán agregados a mi Ventana.
    private JComboBox cboJuegos;
    private JLabel lblJuego, lblNombre, lblDisponible, lblTamanio, lblCategoria, lblPrecio, lblCantidad;
    private JTextField txtNombre, txtDisponibles, txtTamanio, txtCategoria, txtPrecio, txtCantidad;
    private JButton pedir, vender;
    // Un arreglo dinámico para los productos(Juegos).
    ArrayList juegos;
    
    // Constructor
    public Ventana(){
        
         juegos=new ArrayList();
         Producto juego;
         juego =new Producto("Cars","102kb","Deportes", 30,1.30F);
         juegos.add(juego);

         juego =new Producto("Cars2","103kb","Deportes", 20,1.50F);
         juegos.add(juego);
         juego =new Producto("FIFA 2011","204kb","Deportes", 35,1.80F);
         juegos.add(juego);
         juego =new Producto("Matador","312kb","Accion", 20,1.10F);
         juegos.add(juego);
        
         this.setSize(500, 400);
         this.setLayout(new GridLayout(8,2,5,5));
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         this.setTitle("MI ventana de Ventas de Juegos");     
         // Instanciamos y Agregamos los componente al panel
         lblJuego=new JLabel("Seleccione el Juego");
         this.getContentPane().add(lblJuego);
         cboJuegos=new JComboBox();
         for(Producto x:juegos ){
             cboJuegos.addItem(x.getNombre());
         }
         this.getContentPane().add(cboJuegos); // agregando al panel
         lblNombre=new JLabel("Nombre del Juego");
         this.getContentPane().add(lblNombre);
         txtNombre=new JTextField(40);
         this.getContentPane().add(txtNombre);

         lblCategoria=new JLabel("Categoria del Juego");
         this.getContentPane().add(lblCategoria);
         txtCategoria=new JTextField(40);
         this.getContentPane().add(txtCategoria);

                 lblTamanio=new JLabel("Tamaño del Juego");
         this.getContentPane().add(lblTamanio);
         txtTamanio=new JTextField(40);
         this.getContentPane().add(txtTamanio);

         lblPrecio=new JLabel("Precio del Juego");
         this.getContentPane().add(lblPrecio);
         txtPrecio=new JTextField(40);
         this.getContentPane().add(txtPrecio);
 lblDisponible=new JLabel("Disponible: ");
         this.getContentPane().add(lblDisponible);
         txtDisponibles=new JTextField(40);
         this.getContentPane().add(txtDisponibles);

         lblCantidad=new JLabel("Cantidad:");
         this.getContentPane().add(lblCantidad);
         txtCantidad=new JTextField(40);
         this.getContentPane().add(txtCantidad);

         pedir=new JButton("Pedir");
         vender=new JButton("Vender");
         this.getContentPane().add(pedir);
         this.getContentPane().add(vender);
         cboJuegos.addActionListener(this);
         pedir.addActionListener(this);
          vender.addActionListener(this);
    }  
    // Implementación del método abstracto
    public void actionPerformed(ActionEvent e) {
        int indice=cboJuegos.getSelectedIndex();
        if(e.getSource()==cboJuegos){
            
            txtNombre.setText(juegos.get(indice).getNombre());
            txtCategoria.setText(juegos.get(indice).getCategoria());
            txtTamanio.setText(juegos.get(indice).getTamanio());
            txtPrecio.setText(String.valueOf(juegos.get(indice).getPrecio()));
            txtDisponibles.setText(String.valueOf(juegos.get(indice).getDisponibles()));
        }

        if(e.getSource()==pedir){
              juegos.get(indice).setDisponibles(juegos.get(indice).getDisponibles()+Integer.parseInt(txtCantidad.getText()));
              txtDisponibles.setText(String.valueOf(juegos.get(indice).getDisponibles()));
        }
       if(e.getSource()==vender ){
           if((juegos.get(indice).getDisponibles()-Integer.parseInt(txtCantidad.getText()))>=0){
              juegos.get(indice).setDisponibles(juegos.get(indice).getDisponibles()-Integer.parseInt(txtCantidad.getText()));
              txtDisponibles.setText(String.valueOf(juegos.get(indice).getDisponibles()));
           }else
           {
               JOptionPane.showMessageDialog(null, "NO se dispone de la cantidad !!!");
           }
        }
    }
}


Ahora lo único que nos queda es crear un objeto tipo ventana en el método main y ejecutar.

package ventaproductos;

/**
 *
 * @author Paulo
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Ventana v=new Ventana();
        v.setVisible(true);
        //v.pack();
    }

}


La ejecución del programa se verá asi:



Uploaded with ImageShack.us