import javax.swing.*; import java.awt.*; import java.util.ArrayList; import java.util.List; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SeleccionarAsientoV extends JPanel { JPanel panel; private JPanel pSuperior = new JPanel(new FlowLayout(FlowLayout.LEFT)); private JButton bRegresar = new JButton("Regresar."); private int noAsientosSeleccionados = 0; DefaultComboBoxModel salas = new DefaultComboBoxModel(); JComboBox cbSalas = new JComboBox(salas); private JLabel lSeleccionar = new JLabel("Asientos seleccionados: " + noAsientosSeleccionados); private JLabel lFuncion = new JLabel("Función: XXX"); 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()); private JToggleButton [][]bAsientos; private Asiento [][] asientos; List asientosSeleccionados = new ArrayList(); public SeleccionarAsientoV() throws HeadlessException { this.setLayout(new BorderLayout()); //llenarAsientos(); obtenerAsientos(1); agregarComponentes(); crearCeldas(7,10); } public void agregarComponentes(){ pSuperior.add(this.bRegresar); pSuperior.add(lSeleccionar); pSuperior.add(this.cbSalas); this.llenarSalas(); cbSalas.addItemListener(new GestiónBotónSeleccionarSala(this)); 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(); bAsientos = 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"; tfAux.setText("200$"); } if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ tfAux.setBackground(Color.ORANGE); zona = "B"; tfAux.setText("130$"); } if( (i == 0) || (j == 0) || (j == 9)){ tfAux.setBackground(Color.YELLOW); zona = "C"; tfAux.setText("65$"); } if(asientos[i][j].isDisponibilidad()){ tfAux.setBackground(Color.DARK_GRAY); tfAux.setText("ND"); } tfAux.setSize(100,100); //tfAux.addKeyListener(new GestiónTecladoEscribirCaracter(this,i,j)); tfAux.addActionListener(new GestiónBotónSeleccionarAsiento(new Asiento(i,j,zona,asientos[i][j].isDisponibilidad()),this)); con.gridx = j; con.gridy = i; con.gridheight = 1; con.gridwidth = 1; System.out.println(i+" "+j+ " "+bAsientos.length); bAsientos[i][j] = tfAux; pSala.add(bAsientos[i][j],con); } } pSala.setBounds(0,0,700,700); this.add(pSala,BorderLayout.CENTER); } public void actualizarCeldas(){ String zona; for(int i = 0; i < 7; i++){ for(int j = 0; j < 10; j ++){ if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ bAsientos[i][j].setBackground(Color.PINK); zona = "A"; bAsientos[i][j].setText("200$"); } if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ bAsientos[i][j].setBackground(Color.ORANGE); zona = "B"; bAsientos[i][j].setText("130$"); } if( (i == 0) || (j == 0) || (j == 9)){ bAsientos[i][j].setBackground(Color.YELLOW); zona = "C"; bAsientos[i][j].setText("65$"); } if(asientos[i][j].isDisponibilidad()){ bAsientos[i][j].setBackground(Color.DARK_GRAY); bAsientos[i][j].setText("ND"); } } } } public void llenarAsientos(){ asientos = new Asiento[7][10]; String zona = ""; for(int i = 0; i < 7; i++) { for (int j = 0; j < 10; j++) { if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ zona = "A"; } if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ zona = "B"; } if( (i == 0) || (j == 0) || (j == 9)){ zona = "C"; } asientos[i][j]=new Asiento(i,j,zona,false); } } } 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(!bAsientos[x][y].getText().equals("ND")) { if (bAsientos[x][y].isSelected()) { noAsientosSeleccionados++; total += precio; asientosSeleccionados.add(asiento); } else { noAsientosSeleccionados--; total -= precio; for(int a = 0; a < asientosSeleccionados.size() ;a++){ if(asientosSeleccionados.get(a).equals(asiento)){ asientosSeleccionados.remove(a); } } } }else{ bAsientos[x][y].setSelected(false); } System.out.print("["); for(int a = 0; a < asientosSeleccionados.size() ;a++){ System.out.print(asientosSeleccionados.get(a).getX() + " " + asientosSeleccionados.get(a).getY() + ", " ); } System.out.println("]"); lSeleccionar.setText("Asientos seleccionados: " + noAsientosSeleccionados); lTotal.setText("Total: " + total + "$"); } public void obtenerAsientos(int salaSeleccionada){ Connection conexion = null; ResultSet rs; Statement st; String consulta = "SELECT disponibilidad, ubicacion, idAsiento FROM asientos WHERE fksala = "+salaSeleccionada; asientos = new Asiento[7][10]; String zona = ""; try { conexion = ConexionBD.getConnection(); st = conexion.createStatement(); rs = st.executeQuery(consulta); while(rs.next()){ String isDisponible = String.valueOf(rs.getShort("disponibilidad")); boolean disponibilidad = false; if(isDisponible.equals("0")){ disponibilidad = true; } int i = Character.getNumericValue(rs.getString("ubicacion").charAt(0)); int j = Character.getNumericValue(rs.getString("ubicacion").charAt(2)); int id = rs.getInt("idAsiento"); if( ( (j >= 2) && (j <= 7) ) && ( (i >= 2) && (i <= 6) ) ){ zona = "A"; } if( ((i == 1) && (j > 0) && (j < 9)) || ((j == 1) && (i > 0)) || ((j == 8) && (i > 0)) ){ zona = "B"; } if( (i == 0) || (j == 0) || (j == 9)){ zona = "C"; } Asiento aux = new Asiento(id,i,j,zona,disponibilidad); asientos[i][j] = aux; } conexion.close(); } catch (SQLException e) { throw new RuntimeException(e); } } public void llenarSalas() { Connection conexion = null; ResultSet rs; Statement st; String consulta = "SELECT idSala FROM sala"; try { conexion = ConexionBD.getConnection(); st = conexion.createStatement(); rs = st.executeQuery(consulta); while(rs.next()){ salas.addElement(rs.getInt("idSala")); } conexion.close(); } catch (SQLException e) { throw new RuntimeException(e); } } }