Arreglos de Objetos | Práctica 2 | Bus

 



Requerimientos

Codificar una aplicación de reserva de lugares en el camión con:

-Tablero de botones de 4X11 (numerar, de forma consecutiva los asientos, es decir que la etiqueta de cada botón sea un número)

-Reservar el asiento cuando se hace clic sobre el botón que lo representa y cambiar el color y etiqueta de dicho botón.

-Se pulsa un botón especial (el 45=44+1) para mostrar cuales asientos se han reservado.

-Los números de los asientos reservados se pueden almacenar en una variable de tipo String la cual hará el papel de acumulador. Cada que se hace clic en un botón se puede agregar el numero de asiento a la cadena.

Introducción

En esta practica número 2 se desarrollará una aplicación con GUI, haciendo uso de los arreglos de objetos para resolver los problemas que se nos plantearon. Con el fin de aprender a utilizar los arreglos de objetos y saber cómo implementarlos en la solución de algún problema


Objetivos

1: Diseñar una GUI adecuada para el programa

2: Facilitar el desarrollo del programa haciendo uso de arreglos de objetos


Desarrollo

Como primer punto se crea una clase Buss, posteriormente se hereda la clase JFrame y se implementa ActionListener, después importamos las librerías y procedemos a declarar un arreglo de botones, el cual almacenara nuestros 44 botones de los asientos, con 2 botones adicionales de consulta y reinicio, 2 paneles que nos permitirán usar 2 layouts diferentes en un solo layout de la aplicación, 5 etiquetas las cuales mostraran los mensajes al usuario y finalmente un arreglo de strings el cual almacenara los asientos reservados en orden de la reserva, para posteriormente pasarlos a un String y  mostrarlo en una etiqueta.

En este caso desarrolle 3 metodos para el constructor, el de ventana superior, ventana inferior y ventana. En ventana superior cree el panel superior, use un layout nulo y coloque las etiquetas para poder mostrarle al usuario mensajes y otras etiquetas para mostrar el resultado de sus acciones de reserva y el botón de reinicio, el cual resetea el programa. En ventana inferior cree el panel inferior y use el gridlayout para desplegar mi matriz de botones de 4 filas por 11 columnas con un pequeño espacio entre los botones y le agregue el boton de consuta, y sus respectivos ActionListener. Y finalmente en ventana defini el tamaño de la ventana de la aplicación, la hice visible y use un gridlayout de 2 filas y una columna en el cual muestro el panel superior en la parte superior y el panel inferior en la parte inferior.



Después cree el método actionPerformed, el cual escuchara los eventos de los botones, lo primero que realiza es guardar el botón que ha seleccionado el usuario, posteriormente comprueba por condicionales que botón es. En caso que sea el botón de reinicio, se destruirá la ventana y generara una nueva. En caso que sea el botón de consulta, pasara los elementos que se guardaron en el arreglo de asiento (Strings) a una variable resultado de tipo String de forma concatenada en el orden que se fueron reservando los asientos y los imprimirá en la etiqueta de asientos reservados, en caso de que todos los asientos estén ocupados se creara una ventana emergente que nos indicara que todos los asientos están ocupados y terminara. Y finalmente si es uno de los 44 botones de la matriz, guardara el número de su etiqueta en el arreglo de asiento (String), posteriormente cambiara el nombre de la etiqueta a R de reservado, cambiara el color del botón a rojo y lo deshabilitara para que no se pueda volver a usar y mostrara en la etiqueta de reserva de asiento el número del asiento que se acaba de reservar.

En la función main únicamente llamamos al contenedor-constructor para que se ejecute el programa.


Resultado


Código

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

/**
 *
 * @author edgar
 */
public class Buss extends JFrame implements ActionListener {
    
 private JPanel superior,inferior;
 private JButton botones[]=new JButton[44];
 private JButton boton2,q;
 private JLabel disponibilidad,m,r,reservados,k;
 
 public short contador = 0;
 public String asiento[] = new String[44];
 public String resultado = "";
 
     public Buss(){
        super("POO BUSS. Venta de boletos.");
        ventanasuperior();
        ventanainferior();
        ventana();
    }
     
public void ventanasuperior(){
    superior = new JPanel();
    superior.setLayout(null);
    m = new JLabel("Seleccione el asiento que sera ocupado por un pasajero.");//instrucciones
    m.setBounds(0,0, 400, 20);
    superior.add(m);
    r = new JLabel("Se reservo el asiento numero: ");
    r.setBounds(0,90, 180, 20);
    superior.add(r);
    disponibilidad=new JLabel("------------");
    disponibilidad.setBounds(184,90,60,20);
    superior.add(disponibilidad);
    reservados = new JLabel("Los asientos reservados son:");
    reservados.setBounds(400,90,180,20);
    superior.add(reservados);
    k=new JLabel("------------");
    k.setBounds(400,95,1000,100);
    superior.add(k);
    q = new JButton("Reinicio");
    q.setBounds(0, 200, 90, 20);
    q.addActionListener(this);
    superior.add(q);
}
public void ventanainferior(){
    inferior = new JPanel();
    inferior.setLayout(new GridLayout(4,11,2,2));
        for(int i=0; i<44; i++){
            inferior.add(botones[i]=new JButton(""+i));
            botones[i].addActionListener(this);  
        }
        inferior.add(boton2 = new JButton("Consulta"));
        boton2.addActionListener(this);
        
}
public void ventana(){
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(700, 500); 
        this.setVisible(true);
        this.setLayout(new GridLayout(2,1));
        this.add(superior);
        this.add(inferior);
}

    @Override
    public void actionPerformed(ActionEvent e) {
        
        JButton btn=(JButton)e.getSource();
        if(btn == q){
            this.dispose();
            new Buss();
        }
        
        if(btn== boton2){
        btn.setBackground(java.awt.Color.green);
        for(int i = 0; i<contador;i++){
            resultado+= asiento[i];
            resultado+=",";
        }
        k.setText(""+resultado);
        if(contador == 44){
        JOptionPane.showMessageDialog(null,"Todos los asientos estan ocupados.");
        }
        }
        else{
        asiento[contador] =btn.getText().toString();
        contador++;
        btn.setText("R");
        btn.setBackground(java.awt.Color.red);
        btn.setEnabled(false);
        for(int i = 0; i<contador;i++){
            disponibilidad.setText(""+asiento[i]);
        }
        
        }
        
    }
        public static void main(String[] args) {
        new Buss();
        
    }

}

Video de referencia




Comentarios

Entradas populares