115 lines
3.7 KiB
Java
115 lines
3.7 KiB
Java
/*
|
|
Interfaz de compra de boletos aún por trabajar
|
|
El botón CONTINUAR llevaría a la interfaz de pago con tarjeta :)
|
|
*/
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
public class TeatroGUI extends JFrame {
|
|
private JLabel titleLabel;
|
|
private JLabel priceLabel;
|
|
private JPanel ticketPanel;
|
|
private Map<String, Integer> selectedTickets;
|
|
private JTextArea ticketListTextArea;
|
|
private JButton continuarButton;
|
|
|
|
|
|
private static final double VIP_ZONE = 100.0;
|
|
private static final double PREFERENCIAL_ZONE = 80.0;
|
|
private static final double STANDAR_ZONE = 60.0;
|
|
|
|
public TeatroGUI() {
|
|
setTitle("Compra de Boletos Ticketmania");
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
setSize(500, 700);
|
|
setLayout(new FlowLayout(FlowLayout.CENTER));
|
|
|
|
|
|
titleLabel = new JLabel("Seleccione el tipo de boleto para las zonas:");
|
|
add(titleLabel);
|
|
|
|
priceLabel = new JLabel("Precios: VIP $" + VIP_ZONE + " | Preferencial $" + PREFERENCIAL_ZONE + " | Estándar $" + STANDAR_ZONE);
|
|
add(priceLabel);
|
|
|
|
selectedTickets = new HashMap<>();
|
|
|
|
ticketPanel = new JPanel(new GridLayout(3, 2));
|
|
addTicketOption("VIP ");
|
|
addTicketOption("Preferencial ");
|
|
addTicketOption("Estándar ");
|
|
add(ticketPanel);
|
|
continuarButton = new JButton("Continuar");
|
|
|
|
ticketListTextArea = new JTextArea(30, 30);
|
|
ticketListTextArea.setEditable(false);
|
|
add(ticketListTextArea);
|
|
add(continuarButton);
|
|
|
|
setVisible(true);
|
|
}
|
|
|
|
private void addTicketOption(String ticketType) {
|
|
JLabel label = new JLabel(ticketType);
|
|
ticketPanel.add(label);
|
|
|
|
JButton plusButton = new JButton("+");
|
|
plusButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
selectedTickets.put(ticketType, selectedTickets.getOrDefault(ticketType, 0) + 1);
|
|
updateTicketList();
|
|
}
|
|
});
|
|
ticketPanel.add(plusButton);
|
|
|
|
JButton minusButton = new JButton("-");
|
|
minusButton.addActionListener(new ActionListener() {
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
int currentCount = selectedTickets.getOrDefault(ticketType, 0);
|
|
if (currentCount > 0) {
|
|
selectedTickets.put(ticketType, currentCount - 1);
|
|
updateTicketList();
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
ticketPanel.add(minusButton);
|
|
}
|
|
|
|
private void updateTicketList() {
|
|
StringBuilder sb = new StringBuilder();
|
|
double totalPrice = 0.0;
|
|
for (Map.Entry<String, Integer> entry : selectedTickets.entrySet()) {
|
|
String ticketType = entry.getKey();
|
|
int quantity = entry.getValue();
|
|
double price = 0.0;
|
|
switch (ticketType) {
|
|
case "VIP ":
|
|
price = VIP_ZONE;
|
|
break;
|
|
case "Preferencial ":
|
|
price = PREFERENCIAL_ZONE;
|
|
break;
|
|
case "Estándar ":
|
|
price = STANDAR_ZONE;
|
|
break;
|
|
}
|
|
totalPrice += price * quantity;
|
|
sb.append(ticketType).append(": ").append(quantity).append(" boletos\n");
|
|
}
|
|
sb.append("Total: $").append(totalPrice).append("\n");
|
|
//JTextArea ticketListTextArea = (JTextArea) getContentPane().getComponent(4);
|
|
ticketListTextArea.setText(sb.toString());
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new TeatroGUI();
|
|
}
|
|
} |