I have 6 JButtons - btnTblPay[6]. When they are clicked I want the bill from the JTextAreas - btnTblPay[6] to total and display in the Jlabel - lblTillReceiptTotal (it should keep running total as more orders are cleared). When these buttons (btnTblPay) are pressed, I also want the JTextAreas (btnTblPay) to clear contents and the JButtons - btnTables to revert back to White (unnoccupied). I have written a method called clearTblOrder for this purpose but do not know quite how to utilise it.
My code is listed below.
Any help greatly appreciated....
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class CourseWorkTest extends JApplet implements ActionListener{
// declare panels
JPanel pnlMain = new JPanel();
JPanel pnlOrder = new JPanel();
JPanel pnlOrderTop = new JPanel();
JPanel pnlOrderBott = new JPanel();
JPanel pnlOrderBottLeft = new JPanel();
JPanel pnlOrderBottRight = new JPanel();
JPanel pnlTables = new JPanel();
JPanel pnlBill = new JPanel();
JPanel pnlBillTop = new JPanel();
JPanel pnlBillBott = new JPanel();
JPanel pnlManager = new JPanel();
JPanel pnlManagerTop = new JPanel();
JPanel pnlManagerBott = new JPanel();
//pnlOrder objects
JLabel lblStarter = new JLabel("Starter",JLabel.CE
NTER);
JLabel lblMainCourse = new JLabel("Main Course",JLabel.CENTER);
JLabel lblDessert = new JLabel("Dessert",JLabel.CE
NTER);
JLabel lblDrinks = new JLabel("Drinks",JLabel.CEN
TER);
JComboBox myStarter = new JComboBox();
JComboBox myMainCourse = new JComboBox();
JComboBox myDessert = new JComboBox();
JComboBox myDrinks = new JComboBox();
JButton btnReset = new JButton("Clear Order");
JButton btnRemoveItem = new JButton("Remove Item");
JTextArea myOrderBox = new JTextArea(15,15);
JScrollPane myScrollPane = new JScrollPane(myOrderBox);
Basket myBasket = new Basket();
boolean remv = false;
//String order = new String();
String descStarters[]= new String[6];
String descMainCourses[]= new String[6];
String descDesserts[]= new String[6];
String descDrinks[]= new String[6];
float myStarterCosts[]= new float[6];
float myMainCourseCosts[]= new float[6];
float myDessertCosts[]= new float[6];
float myDrinksCosts[]= new float[6];
// pnlTables objects
JButton btnTables[] = new JButton[6];
//pnlBill objects
JLabel lblBillTitle = new JLabel("Tables Currently Occupied And Their Bills",JLabel.CENTER);
JTextArea tblOrders[] = new JTextArea[6];
//pnlManager objects
JButton btnTblPay[] = new JButton[6];
JLabel lblTillReceipt = new JLabel("This Evening's Till Receipts: ",JLabel.CENTER);
JLabel lblTillReceiptTotal = new JLabel(" £0.00",JLabel.CENTER);
public void init(){
//Add objects to main panel - pnlMain
pnlMain.setLayout(new GridLayout(2,2));
pnlMain.setBackground(Colo
r.WHITE);
pnlMain.add(pnlOrder);
pnlMain.add(pnlTables);
pnlMain.add(pnlBill);
pnlMain.add(pnlManager);
//Add Objects to pnlOrder
pnlOrder.setLayout(new BorderLayout());
pnlOrder.add(pnlOrderTop, BorderLayout.NORTH);
pnlOrder.add(pnlOrderBott,
BorderLayout.CENTER);
//Add objects to pnlOrderTop
pnlOrderTop.setLayout(new GridLayout(2,4));
pnlOrderTop.add(lblStarter
);
pnlOrderTop.add(lblMainCou
rse);
pnlOrderTop.add(lblDessert
);
pnlOrderTop.add(lblDrinks)
;
pnlOrderTop.add(myStarter)
;
pnlOrderTop.add(myMainCour
se);
pnlOrderTop.add(myDessert)
;
pnlOrderTop.add(myDrinks);
//Starters array
descStarters[0]= "Haddock Chowder";
descStarters[1]= "French Onion Soup";
descStarters[2]= "Eggs Florentine";
descStarters[3]= "Ardennes Pate";
descStarters[4]= "Quail Salad";
descStarters[5]= "Thai Tiger Prawns";
for (int i=0;i<6;i++){
myStarter.addItem(descStar
ters[i]);
}
//Main course array
descMainCourses[0]= "Breast of Chicken";
descMainCourses[1]= "Shredded Chilli Beef";
descMainCourses[2]= "Roast Duck";
descMainCourses[3]= "Tofu Delight";
descMainCourses[4]= "Bi Bim Bap";
descMainCourses[5]= "Spaghetti Bolognaise";
for (int i=0;i<6;i++){
myMainCourse.addItem(descM
ainCourses
[i]);
}
//Dessert array
descDesserts[0]= "Ice Cream";
descDesserts[1]= "Fruit Cocktail";
descDesserts[2]= "Chocolate Gateaux";
descDesserts[3]= "Lemon Cheesecake";
descDesserts[4]= "Cheese and Biscuits";
descDesserts[5]= "Baclava";
for (int i=0;i<6;i++){
myDessert.addItem(descDess
erts[i]);
}
//Drinks array
descDrinks[0]= "Asahi";
descDrinks[1]= "Becks";
descDrinks[2]= "Gin & Tonic";
descDrinks[3]= "Orange Juice";
descDrinks[4]= "Remi Martin";
descDrinks[5]= "Rum & Pineapple";
for (int i=0;i<6;i++){
myDrinks.addItem(descDrink
s[i]);
}
//add objects to pnlOrderBott
pnlOrderBott.setLayout(new
GridLayout(0,2));
pnlOrderBott.add(pnlOrderB
ottLeft);
pnlOrderBott.add(pnlOrderB
ottRight);
myOrderBox = new JTextArea(15,15);
myOrderBox.setLineWrap(tru
e);
myScrollPane = new JScrollPane(myOrderBox);
pnlOrderBottRight.add(mySc
rollPane);
pnlOrderBottLeft.add(btnRe
set);
pnlOrderBottLeft.add(btnRe
moveItem);
//Add objects to pnlTables
pnlTables.setLayout(new GridLayout(3,2,20,20));
pnlTables.setBackground(Co
lor.WHITE)
;
for (int i=0;i<6;i++){
btnTables[i]=new JButton("Table "+ (i+1));
pnlTables.add(btnTables[i]
);
btnTables[i].setBackground
(Color.WHI
TE);
btnTables[i].setActionComm
and("" + i);
btnTables[i].addActionList
ener(this)
;
}
//Add panels to Bill panel
pnlBill.setLayout(new BorderLayout());
pnlBill.add(pnlBillTop, BorderLayout.NORTH);
pnlBill.add(pnlBillBott, BorderLayout.CENTER);
//Add label to BillTop
pnlBillTop.add(lblBillTitl
e);
//Add table order/bill text areas to BillBott panel
pnlBillBott.setLayout(new GridLayout(2,3,2,2));
for (int i=0;i<6;i++){
tblOrders[i]=new JTextArea(5,10);
pnlBillBott.add(tblOrders[
i]);
}
//Manager Panel
pnlManager.setLayout(new GridLayout(2,1));
pnlManager.add(pnlManagerT
op);
pnlManager.add(pnlManagerB
ott);
//Manager Top panel
pnlManagerTop.setLayout(ne
w GridLayout(2,3,5,5));
for (int k=0;k<6;k++){
btnTblPay[k]=new JButton("Clear Table "+ (k+1));
pnlManagerTop.add(btnTblPa
y[k]);
btnTblPay[k].setBackground
(Color.WHI
TE);
btnTblPay[k].setActionComm
and("" + k);
btnTblPay[k].addActionList
ener(this)
;
}
//Manager Bottom Panel
pnlManagerBott.setLayout(n
ew GridLayout(2,1,5,5));
pnlManagerBott.add(lblTill
Receipt);
pnlManagerBott.add(lblTill
ReceiptTot
al);
//Starter Costs array
myStarterCosts[0]= 5.00F;
myStarterCosts[1]= 4.50F;
myStarterCosts[2]= 6.00F;
myStarterCosts[3]= 6.00F;
myStarterCosts[4]= 6.50F;
myStarterCosts[5]= 7.00F;
//Main Course Costs array
myMainCourseCosts[0]= 9.00F;
myMainCourseCosts[1]= 9.50F;
myMainCourseCosts[2]= 10.00F;
myMainCourseCosts[3]= 6.50F;
myMainCourseCosts[4]= 8.50F;
myMainCourseCosts[5]= 8.00F;
//Dessert Costs array
myDessertCosts[0]= 3.50F;
myDessertCosts[1]= 4.50F;
myDessertCosts[2]= 5.00F;
myDessertCosts[3]= 5.00F;
myDessertCosts[4]= 4.50F;
myDessertCosts[5]= 4.00F;
//Drinks Costs array
myDrinksCosts[0]= 2.50F;
myDrinksCosts[1]= 2.50F;
myDrinksCosts[2]= 3.00F;
myDrinksCosts[3]= 2.00F;
myDrinksCosts[4]= 5.00F;
myDrinksCosts[5]= 3.00F;
// puts the JPanel on the JApplet
setContentPane(pnlMain);
//add actionListener
btnReset.addActionListener
(this);
btnRemoveItem.addActionLis
tener(this
);
myStarter.addActionListene
r(this);
myMainCourse.addActionList
ener(this)
;
myDessert.addActionListene
r(this);
myDrinks.addActionListener
(this);
}//end init
public void actionPerformed(ActionEven
t e){ // ((JButton) e.getSource()).setVisible(
false);
//Gather order to myOrderBox and calculate total
if (e.getSource()==myStarter)
{
//set color to black if Clear order button has been pressed
myOrderBox.setForeground(C
olor.BLACK
);
int j = myStarter.getSelectedIndex
();
OrderLine line = new OrderLine(j,descStarters[j
],myStarte
rCosts[j])
;
if (remv){
myBasket.removeOrderLine(l
ine);
remv=false;
}else{
myBasket.addOrderLine(line
);
}
myOrderBox.setText(myBaske
t.showCont
ents());
}
if (e.getSource()==myMainCour
se){
int j = myMainCourse.getSelectedIn
dex();
OrderLine line = new OrderLine(j,descMainCourse
s[j],myMai
nCourseCos
ts[j]);
if (remv){
myBasket.removeOrderLine(l
ine);
remv=false;
}else{
myBasket.addOrderLine(line
);
}
myOrderBox.setText(myBaske
t.showCont
ents());
}
if (e.getSource()==myDessert)
{
int j = myDessert.getSelectedIndex
();
OrderLine line = new OrderLine(j,descDesserts[j
],myDesser
tCosts[j])
;
if (remv){
myBasket.removeOrderLine(l
ine);
remv=false;
}else{
myBasket.addOrderLine(line
);
}
myOrderBox.setText(myBaske
t.showCont
ents());
}
if (e.getSource()==myDrinks){
int j = myDrinks.getSelectedIndex(
);
OrderLine line = new OrderLine(j,descDrinks[j],
myDrinksCo
sts[j]);
if (remv){
myBasket.removeOrderLine(l
ine);
remv=false;
}else{
myBasket.addOrderLine(line
);
}
myOrderBox.setText(myBaske
t.showCont
ents());
}
// Clear the order box if Reset button is pressed
if (e.getSource()==btnReset){
myBasket.clearIt();
myOrderBox.setForeground(C
olor.RED);
myOrderBox.setText("The order is empty");
}
// Assign order to Bill Panel for Kitchen staff and
Object o = e.getSource();
if (o instanceof JButton){
String sIndex = ((JButton)o).getActionComm
and();
int index = Integer.parseInt(sIndex);
updateTblOrder(index);
}
}// end actionPerformed
// method to update table orders in text areas of Bill panel and show table as occupied (turn button orange)
public void updateTblOrder(int index){
tblOrders[index].setText(m
yBasket.sh
owContents
());
btnTables[index].setBackgr
ound(Color
.ORANGE);
}//end updateTblOrder method
//method to clear table order from tblOrder Text Areas and show table as unoccupied (turn button back to white)
public void clearTblOrder(int index){
tblOrders[index].setText("
Table Empty");
btnTables[index].setBackgr
ound(Color
.WHITE);
}//end clearTblOrder method
}//end class def
class OrderLine{
public int id;
public String description;
public int quantity;
public double price;
public OrderLine(int i,String des,double p){
this.id = i;
this.description = des;
this .price =p;
this.quantity = 1;
}
}// end of OrderLine class def
class Basket{
ArrayList Order= new ArrayList();
public void clearIt(){
Order.clear();
}// end of clearIt method
public void addOrderLine(OrderLine line){
boolean there = false;
for(int j =0;j<Order.size();j++){
OrderLine read = (OrderLine)Order.get(j);
//the code below which updates quantity of orderlines has been commented out because very
//often waiters take orders in a certain pattern in order to know where the dishes are
//going. If the quantity is added to, the waiter will have no idea as to which customer
//ordered which dish
//if(read.id == line.id){
// there = true;
// read.quantity++;//if it's there already update its quantity
//}
}//end loop
if(!there){Order.add(line)
;}// add another instance
}//end addOrderLine method
public void removeOrderLine(OrderLine line){
for(int j =0;j<Order.size();j++){
OrderLine read = (OrderLine)Order.get(j);
if(read.id == line.id)read.quantity--;
if(read.quantity<1){Order.
remove(rea
d);}
}//end loop
}//end removeOrderLine
public String showContents(){
String contents = new String();
double bill = 0;
for(int j =0;j<Order.size();j++){
OrderLine read = (OrderLine)Order.get(j);
contents+=read.quantity+" "+read.description;
contents+="\n";
bill+=read.price*read.quan
tity;
}
if(bill>0){
contents+="\nTotal cost = £"+bill;
return contents;
}else{
return "No order" ;
}
}//end showContents
}//end Basket class def