本文介绍了Java:提交后禁用所有 JToggleButtons — setEnabled(false);的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am currently developing a booking system as a task for my degree. What would be the best way to disable selected JToggleButtons after a button is pressed; so seats wouldn't be available after purchase. I have tried using for loops and arrays but have had some trouble retrieving which button has been pressed. Here's my code, please run it if you can you will understand it better.

PS:我没有使用数据库.

PS: I'm not making use of a database.

谢谢.

// 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
    }
}

相关:多预订系统

推荐答案

解决方案是使用 List 或数组,然后循环遍历列表或数组检查以查看哪个按钮 isSelected() 返回 true.

The solution is to use a List<AbstractButton> or an array and then loop through the list or array checking to see for which buttons isSelected() returns true.

为了更好的帮助,请发布您的代码.

For better help, though, post your code.

这篇关于Java:提交后禁用所有 JToggleButtons — setEnabled(false);的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-12 03:48