From 2e26e90c9ac61ac8ad48023782a483321e8de21e Mon Sep 17 00:00:00 2001 From: David Date: Sun, 10 Mar 2024 19:43:27 -0600 Subject: [PATCH] Ventana Asientos Avances --- Asiento.java | 45 ++++++++++ GestiónBotónSeleccionarAsiento.java | 17 ++++ SeleccionarAsientoV.java | 119 ++++++++++++++++++++++++++ 3 files changed, 181 insertions(+) create mode 100644 Asiento.java create mode 100644 GestiónBotónSeleccionarAsiento.java create mode 100644 SeleccionarAsientoV.java diff --git a/Asiento.java b/Asiento.java new file mode 100644 index 0000000..d2bcfa2 --- /dev/null +++ b/Asiento.java @@ -0,0 +1,45 @@ +public class Asiento { + private int x; + private int y; + private String zona; + private boolean disponibilidad; + + public Asiento(int x, int y, String zona, boolean disponibilidad) { + this.x = x; + this.y = y; + this.zona = zona; + this.disponibilidad = disponibilidad; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public String getZona() { + return zona; + } + + public void setZona(String zona) { + this.zona = zona; + } + + public boolean isDisponibilidad() { + return disponibilidad; + } + + public void setDisponibilidad(boolean disponibilidad) { + this.disponibilidad = disponibilidad; + } +} diff --git a/GestiónBotónSeleccionarAsiento.java b/GestiónBotónSeleccionarAsiento.java new file mode 100644 index 0000000..c7cafc0 --- /dev/null +++ b/GestiónBotónSeleccionarAsiento.java @@ -0,0 +1,17 @@ +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +public class GestiónBotónSeleccionarAsiento implements ChangeListener { + private Asiento asiento; + private SeleccionarAsientoV ventana; + public GestiónBotónSeleccionarAsiento(Asiento parAsiento, SeleccionarAsientoV parVentana) { + asiento = parAsiento; + ventana = parVentana; + } + + @Override + public void stateChanged(ChangeEvent e) { + System.out.println("i:" + asiento.getX() + " j:" + asiento.getY()); + ventana.seleccionarAsientos(asiento); + } +} diff --git a/SeleccionarAsientoV.java b/SeleccionarAsientoV.java new file mode 100644 index 0000000..bae819f --- /dev/null +++ b/SeleccionarAsientoV.java @@ -0,0 +1,119 @@ +import javax.swing.*; +import java.awt.*; + +public class SeleccionarAsientoV extends JFrame { + + private JPanel pSuperior = new JPanel(new FlowLayout(FlowLayout.LEFT)); + private JButton bRegresar = new JButton("Regresar."); + int noAsientosSeleccionados = 0; + private JLabel lSeleccionar = new JLabel("Asientos seleccionados: " + noAsientosSeleccionados); + + private JPanel pInferior = new JPanel(new FlowLayout(FlowLayout.CENTER)); + private int total = 0; + private JLabel lTotal = new JLabel("Total: " + total + "$"); + private JButton bSeleccionar = new JButton("Seleccionar"); + + private JPanel pSala = new JPanel(new GridBagLayout()); + + JToggleButton [][]asientos; + + public SeleccionarAsientoV() throws HeadlessException { + super("Seleccionar Asiento"); + this.setLayout(new BorderLayout()); + + agregarComponentes(); + crearCeldas(7,10); + iniciar(); + } + + public void agregarComponentes(){ + pSuperior.add(this.bRegresar); + pSuperior.add(lSeleccionar); + + pInferior.add(this.lTotal); + pInferior.add(this.bSeleccionar); + + this.add(pSuperior,BorderLayout.NORTH); + this.add(pInferior,BorderLayout.SOUTH); + } + + public void crearCeldas(int parX, int parY){ + + GridBagConstraints con = new GridBagConstraints(); + + asientos = new JToggleButton[parX][parY]; + + String zona = ""; + + JToggleButton tfAux; + for(int i = 0; i < parX; i++){ + for(int j = 0; j < parY; j ++){ + tfAux = new JToggleButton(""); + if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ + tfAux.setBackground(Color.PINK); + zona = "A"; + } + if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ + tfAux.setBackground(Color.ORANGE); + zona = "B"; + } + if( (i == 0) || (j == 0) || (j == 9)){ + tfAux.setBackground(Color.YELLOW); + zona = "C"; + } + tfAux.setSize(100,100); + //tfAux.addKeyListener(new GestiónTecladoEscribirCaracter(this,i,j)); + tfAux.addChangeListener(new GestiónBotónSeleccionarAsiento(new Asiento(i,j,zona,true),this)); + con.gridx = j; + con.gridy = i; + con.gridheight = 1; + con.gridwidth = 1; + System.out.println(i+" "+j+ " "+asientos.length); + asientos[i][j] = tfAux; + pSala.add(asientos[i][j],con); + } + } + + pSala.setBounds(0,0,700,700); + this.add(pSala,BorderLayout.CENTER); + } + + public void seleccionarAsientos(Asiento asiento){ + int precio = 0; + + int x = asiento.getX(), y = asiento.getY(); + String zona = asiento.getZona(); + + switch (zona){ + case "A": + precio = 200; + break; + + case "B": + precio = 130; + break; + + case "C": + precio = 65; + break; + } + + if(asientos[x][y].isSelected()){ + noAsientosSeleccionados ++; + total += precio; + }else{ + noAsientosSeleccionados --; + total -= precio; + } + + lSeleccionar.setText("Asientos seleccionados: " + noAsientosSeleccionados); + lTotal.setText("Total: " + total + "$"); + } + + public void iniciar(){ + this.setBounds(100,100,700,700); + //this.setResizable(false); + this.setVisible(true); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } +}