gpt4 book ai didi

Java:提交后禁用所有 JToggleButtons — setEnabled(false);

转载 作者:行者123 更新时间:2023-12-04 05:50:38 26 4
gpt4 key购买 nike

我目前正在开发一个预订系统作为我学位的任务。按下按钮后禁用所选 JToggleButtons 的最佳方法是什么?所以购买后就没有座位了。我曾尝试使用 for 循环和数组,但在检索按下了哪个按钮时遇到了一些麻烦。这是我的代码,如果你能更好地理解它,请运行它。

PS:我没有使用数据库。

谢谢你。

// CM1203 Fundamentals of Computing with Java; Second Assignement.
// Walter Carvalho - C1001984; 2012.
// Cardiff University

// Load Libraries
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import java.text.*;

public class cinemaSystem extends JFrame implements ActionListener {
// Global Variables
boolean lselected, rselected, mselected;
double chargeDue;
int a, b, c;
static Ticket oapticket, childticket, adultticket;
JFrame frame = new JFrame(); // Creates JFrame
JLabel title, lchild, ladult, loap, ltotalprice, time;
JTextField child, adult, oap, totalprice;
JButton submit;
JRadioButton time1, time2, time3, time4, time5; // Radio Butons
JToggleButton l[][], m[][], r[][]; // Names grid of JButtons
JPanel panel1, panel2, panel3, panel4, panel5, panel6;
ArrayList<String> seatsAvailable = new ArrayList<String>();
ArrayList<String> coupon = new ArrayList<String>();

// Constructor
public cinemaSystem(){

title = new JLabel("Cinema Booking System");
title.setFont(new Font("Helvetica", Font.BOLD, 30));
title.setLocation(12,5);
title.setSize(600, 60);

frame.setLayout(null); // Setting Grid Layout
// panel1.setLayout(new GridLayout(seat,row));
l = new JToggleButton[4][4]; // Allocating Size of Grid
panel1 = new JPanel(new GridLayout(4,4));
panel1.setBounds(20, 95, 220, 140);
for(int y = 0; y <4 ; y++){
for(int x = 0; x < 4; x++){
l[x][y] = new JToggleButton("L" + y + x); // Creates New JButton
l[x][y].addActionListener(this);
seatsAvailable.add("L" + y + x);
panel1.add(l[x][y]); //adds button to grid
}
}

m = new JToggleButton[4][2]; // Allocating Size of Grid
panel2 = new JPanel(new GridLayout(2,4));
panel2.setBounds(240, 165, 220, 70);
for(int y = 0; y <2 ; y++){
for(int x = 0; x < 4; x++){
m[x][y] = new JToggleButton("M" + y + x); // Creates New JButton
m[x][y].addActionListener(this);
seatsAvailable.add("M" + y + x);
panel2.add(m[x][y]); //adds button to grid
}
}

r = new JToggleButton[4][4]; // Allocating Size of Grid
panel3 = new JPanel(new GridLayout(4,4));
panel3.setBounds(460, 95, 220, 140);
for(int y = 0; y <4 ; y++){
for(int x = 0; x < 4; x++){
r[x][y] = new JToggleButton("R" + y + x); // Creates New JButton
r[x][y].addActionListener(this);
seatsAvailable.add("R" + y + x);
panel3.add(r[x][y]); //adds button to grid
}
}

panel4 = new JPanel(new FlowLayout());
panel4.setBounds(0, 250, 300, 70);

lchild = new JLabel("Child");
child = new JTextField("0", 2);
child.addActionListener(this);

ladult = new JLabel("Adult");
adult = new JTextField("0", 2);
adult.addActionListener(this);

loap = new JLabel("OAP");
oap = new JTextField("0", 2);
oap.addActionListener(this);

submit = new JButton("Submit");
submit.addActionListener(this);

oapticket = new Ticket(4.70);
childticket = new Ticket(3.50);
adultticket = new Ticket(6.10);

child.addKeyListener(new MyKeyAdapter());
oap.addKeyListener(new MyKeyAdapter());
adult.addKeyListener(new MyKeyAdapter());

panel4.add(lchild);
panel4.add(child);
panel4.add(ladult);
panel4.add(adult);
panel4.add(loap);
panel4.add(oap);
panel4.add(submit);

panel5 = new JPanel(new FlowLayout());
panel5.setBounds(240, 250, 300, 70);

ltotalprice = new JLabel("Charge Due (£): ");
totalprice = new JTextField("£0.00", 5);
totalprice.setEnabled(false);
panel5.add(ltotalprice);
panel5.add(totalprice);

panel6 = new JPanel(new FlowLayout());
panel6.setBounds(0, 55, 560, 30);

time = new JLabel("Please select a film time: ");
time1 = new JRadioButton("13:00", true);
time2 = new JRadioButton("15:00", false);
time3 = new JRadioButton("17:00", false);
time4 = new JRadioButton("19:00", false);
time5 = new JRadioButton("21:00", false);

ButtonGroup group = new ButtonGroup();
group.add(time1);
group.add(time2);
group.add(time3);
group.add(time4);
group.add(time5);
panel6.add(time);
panel6.add(time1);
panel6.add(time2);
panel6.add(time3);
panel6.add(time4);
panel6.add(time5);
time1.addActionListener(this);
time2.addActionListener(this);
time3.addActionListener(this);
time4.addActionListener(this);
time5.addActionListener(this);
frame.add(title);
frame.add(panel1);
frame.add(panel2);
frame.add(panel3);
frame.add(panel4);
frame.add(panel5);
frame.add(panel6);
frame.setPreferredSize(new Dimension(700, 350));
frame.setTitle("Cinema Booking");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack(); //sets appropriate size for frame
frame.setVisible(true); //makes frame visible


}

// Calculates Charge Due for current transaction.
public double calcChargeDue(){
DecimalFormat df = new DecimalFormat("#.##");
double chargeDue = 0.0;
chargeDue = (a*childticket.price) + (b*oapticket.price) + (c*adultticket.price);
totalprice.setText("£"+df.format(chargeDue));
return chargeDue;
}

// Method to check if the number of people matches the number of seats selected.
public void check(){
int check = coupon.size();
int noTickets = a + b + c;
if (check != noTickets){
submit.setEnabled(false);
}
else {
submit.setEnabled(true);
}

}

// Ticket Object
public class Ticket {

double price;

// Constructor
public Ticket(double cost) {
price = cost;
}

public double getTicketPrice() {
return price;
}

}

public void actionPerformed(ActionEvent e)
{

a = Integer.parseInt(child.getText());
b = Integer.parseInt(oap.getText());
c = Integer.parseInt(adult.getText());

for(int y = 0; y < 4; y++){
for(int x = 0; x < 4; x++){

lselected = l[x][y].isSelected();
rselected = r[x][y].isSelected();

if (e.getSource() == l[x][y]) {
if(lselected == true){
coupon.add(e.getActionCommand());
calcChargeDue();
check();
}
else {
coupon.remove(e.getActionCommand());
check();
}
}

if (e.getSource() == r[x][y]) {
if(rselected == true){
coupon.add(e.getActionCommand());
calcChargeDue();
check();
}
else {
coupon.remove(e.getActionCommand());
check();
}
}

if (e.getSource() == oap){
calcChargeDue();
check();
}

if (e.getSource() == adult){
calcChargeDue();
check();
}

if (e.getSource() == child){
calcChargeDue();
check();
}

}
}

for(int y = 0; y < 2; y++){
for(int x = 0; x < 4; x++){

mselected = m[x][y].isSelected();

if (e.getSource() == m[x][y]) {
if(mselected == true){
coupon.add(e.getActionCommand());
calcChargeDue();
check();
}
else {
coupon.remove(e.getActionCommand());
check();
}
}
}
}

if(time1 == e.getSource()){

}

if(time2 == e.getSource()){

}

if(time3 == e.getSource()){

}

if(time4 == e.getSource()){

}

if(time5 == e.getSource()){

}

if(submit == e.getSource()) {

for(int y = 0; y < 4; y++){
for(int x = 0; x < 4; x++){

lselected = l[x][y].isSelected();
rselected = r[x][y].isSelected();

if (lselected == true) {
l[x][y].setEnabled(false);
}

if (rselected == true) {
r[x][y].setEnabled(false);
}

}
}

for(int y = 0; y < 2; y++){
for(int x = 0; x < 4; x++){

mselected = m[x][y].isSelected();

if (mselected == true) {
m[x][y].setEnabled(false);
}
}
}

Collections.sort(coupon);
System.out.println("Here's your ticket:");
System.out.println(coupon);
System.out.println("Child: " + child.getText());
System.out.println("Adult: " + adult.getText());
System.out.println("OAP: " + oap.getText());
System.out.println("Total Price: " + totalprice.getText());
System.out.println("Thank you. Enjoy your film.");
System.out.println(" ");
coupon.clear();
child.setText("0");
adult.setText("0");
oap.setText("0");
}

}

// Main Class
public static void main(String[] args) {
new cinemaSystem(); //makes new ButtonGrid with 2 parameters
}
}

相关: Multiple Bookings System

最佳答案

解决方案是使用 List<AbstractButton>或数组,然后遍历列表或数组检查以查看哪些按钮 isSelected()返回真。

不过,为了获得更好的帮助,请发布您的代码。

关于Java:提交后禁用所有 JToggleButtons — setEnabled(false);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com