my code is posted below the program is to be very simple just just a button a choice box a text box and a canvas the user is to be able to select what item they want and then the price appears in the label....then the user is able to put in a quantity and when they hit order the program should calculate the price and display it nice and neat in the canvas....I'm new to Java and ...if this were C++ I could do it in an hour I just don't understand why it's not working...please someone help

thank you

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class grocerystore extends Applet{  

        private Button order = new Button("Order");
        private Label price = new Label("Your price will appear here");
        private Choice food = new Choice();
 private TextField quantity = new TextField();
        double quantitySelected;
 double eggs = 1.90;
 double milk = 1.47;
 double bread = 2.12;
 double total;
 display output = new display();


public void init()      {
                add(order);
                add(price);
  add(quantity);
  add(food);
                        food.add("Select your food");
                        food.add("Eggs");
                        food.add("Milk");
                        food.add("Bread");
  order.addActionListener(this);
  food.addItemListener(this);
  add(output);
  output.setSize(250,100);
  order.addActionListener(this)
  food.addActionListener(this)
        }

class display extends Canvas 
  implements ActionListener, ItemListener {
         int itemSelected = food.getSelectedIndex();    


public void actionPerformed(ActionEvent action) {
         quantitySelected = new Double(quantity.getText()).doubleValue();



         if (itemSelected==1)
   total = quantitySelected * eggs;
  if (itemSelected==2)
   total = quantitySelected * milk;
  if (itemSelected==3)
   total = quantitySelected * bread;  


        }

public void itemStateChanged(ItemEvent event)   {


         if (itemSelected==1)
                        price.setText("The price of a dozen eggs is " + eggs);
       if (itemSelected==2)
   price.setText("The price of a quart of milk is " + milk);
  if (itemSelected==3)
   price.setText("The price of a loaf of bread is " + bread);
   }


public void paint(Graphics g){
        if (itemSelected==1){
  g.drawString("You purchased " + quantitySelected + "dozen eggs",20,20);
  g.drawString("for a total of " + total,20,30);
         }
}


}

}

Recommended Answers

All 12 Replies

whats the error?

First thing I see is that you missed semicolons on the following lines:

order.addActionListener(this)
food.addActionListener(this)

another thing ... quick paste into eclipse and it suggests that you cast "this" with (ActionListener) and (ItemListener) .... Also I think you may have meant addItemListener on the second food.add* line.

order.addActionListener((ActionListener)this);
food.addItemListener((ItemListener)this);
order.addActionListener((ActionListener)this);
food.addItemListener((ItemListener)this);


//edit ... left off the semicolons myself that time ;)

well......after an hour of staring and trying things I come to another dead end......thank you for the help before I appreciate it but now my applet doesn't initialize....and all I get is a blank rectangle I get no errors so I'm not sure what I'm doing wrong...I'll keep working at it but if someone finds something before I do I'd appreciate it a lot

Thank you in advance

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class grocerystore extends Applet{  

        private Button order = new Button("Order");
        private Label price = new Label("Your price will appear here");
        private Choice food = new Choice();
 private TextField quantity = new TextField();
        double quantitySelected;
 double eggs = 1.90;
 double milk = 1.47;
 double bread = 2.12;
 double total;
 display output = new display();


public void init()      {
                add(order);
                add(price);
                add(quantity);
  add(food);
                        food.add("Select your food");
                        food.add("Eggs");
                        food.add("Milk");
                        food.add("Bread");
  add(output);
  output.setSize(250,100);
  order.addActionListener((ActionListener)this);
  food.addItemListener((ItemListener)this);
  order.addActionListener((ActionListener)this);
  food.addItemListener((ItemListener)this);

        }

class display extends Canvas 
  implements ActionListener, ItemListener {
         int itemSelected = food.getSelectedIndex();    


public void actionPerformed(ActionEvent action) {
         quantitySelected = new Double(quantity.getText()).doubleValue();



         if (itemSelected==1)
   total = quantitySelected * eggs;
  if (itemSelected==2)
   total = quantitySelected * milk;
  if (itemSelected==3)
   total = quantitySelected * bread;  


        }

public void itemStateChanged(ItemEvent event)   {


         if (itemSelected==1)
                        price.setText("The price of a dozen eggs is " + eggs);
       if (itemSelected==2)
   price.setText("The price of a quart of milk is " + milk);
  if (itemSelected==3)
   price.setText("The price of a loaf of bread is " + bread);
   }


public void paint(Graphics g){
        if (itemSelected==1){
  g.drawString("You purchased " + quantitySelected + "dozen eggs",20,20);
  g.drawString("for a total of " + total,20,30);
         }
}


}
}

Something is wrong with how you use the ActionListner().

//order.addActionListener((ActionListener)this);
//food.addItemListener((ItemListener)this);
//order.addActionListener((ActionListener)this);
//food.addItemListener((ItemListener)this);

in the init() method, those are cuasing the applet not to intialize correctly and why do you do it twice?

EDIT: I suspect that you are handleing the action events wrong.

Alright well I took out the extra two lines so they aren't in there twice and instead of using the keyword this I applied them to thier respective areas....price and output but it still won't initialize I even tried it keeping it with the keyword this and still no progress.......

order.addActionListener((ActionListener)output);
food.addItemListener((ItemListener)price);


order.addActionListener((ActionListener)this);
food.addItemListener((ItemListener)this);

niether way works :-(

EDIT----ok well I worked on it some more and I got the applet to initalize when I commented out the second line so I had
order.addActionListener((ActionListener)output);
//food.addItemListener((ItemListener)price);
it initialized but didn't do anything when I entered a int into the text box and hit the order button

I don't know why it won't initalize with the second line

check how the action is processed, and make sure the html code is correctly calling the applet with all tags closed, personally i dont know why it wont intialize either, looks correct.

<html>
<body>
<applet code="grocerystore.java"width="250"height="250">
</applet>
</body>
</html>

that is the html code I'm using.....it's a simple webpage used to just test the code I'm getting a cast exception on line 30 and 31 which are the addActionListener and the addItemListener....I don't know why I can't figure it out.....:-( I e-mailed my professor with the question...I'm gonna see what he has to say about it.....and I'll work on it some more....if you looked at it some more that would be great one of these times my eyes are going to start bleeding from staring too long.......

if u get a solution post back so I can learn too :)

WOOOOO I figured it out....I got it to initialize and I got my choicebox to work whoohooo
now I just gotta work on manipulating my canvas to work when my button is pressed.....but it's 3 am and I've been working on this since midnight just like everyother night this week...thank you for all you help and Bounty here is the code

import java.awt.*;
import java.applet.Applet;
import java.awt.event.*;
public class grocerystore extends Applet{  

        private Button order = new Button("Order");
        private Label price = new Label("Your price will appear here");
        private Choice food = new Choice();
 private TextField quantity = new TextField(3);
        double quantitySelected;
 double eggs = 1.90;
 double milk = 1.47;
 double bread = 2.12;
 double total;
 display output = new display();

public void init()      {
                add(order);
                add(quantity);
  add(food);
                        food.add("Select your food");
                        food.add("Eggs");
                        food.add("Milk");
                        food.add("Bread");
  add(price);
  add(output);
  output.setSize(300,300);
  food.addItemListener(this.output);
  order.addActionListener(this.output);

        }
class display extends Canvas 
  implements ActionListener, ItemListener {
         public int itemSelected;   

public void actionPerformed(ActionEvent action) {

         quantitySelected = new Double(quantity.getText()).doubleValue();
         itemSelected = food.getSelectedIndex();


         if (itemSelected==1)
   total = quantitySelected * eggs;
  if (itemSelected==2)
   total = quantitySelected * milk;
  if (itemSelected==3)
   total = quantitySelected * bread;  

}          

        }

public void itemStateChanged(ItemEvent event)   {
  itemSelected = food.getSelectedIndex();  


         if (itemSelected==1)
                        price.setText("The price of a dozen eggs is " + eggs );
       if (itemSelected==2)
   price.setText("The price of a quart of milk is " + milk);
  if (itemSelected==3)
   price.setText("The price of a loaf of bread is " + bread);
   }

public void paint(Graphics g){
        if (itemSelected==1){
  g.drawString("You purchased " + quantitySelected + "dozen eggs",50,50);
  g.drawString("for a total of " + total,50,60);
         }

}






}

thnx :) glad to here you got it working

I think if you changed "grocerystore.java" to "grocerystore.class" you might get it to display in your browser.

<html>
<body>
<applet code="grocerystore.java"width="250"height="250">
</applet>
</body>
</html>

that is the html code I'm using.....it's a simple webpage used to just test the code I'm getting a cast exception on line 30 and 31 which are the addActionListener and the addItemListener....I don't know why I can't figure it out.....:-( I e-mailed my professor with the question...I'm gonna see what he has to say about it.....and I'll work on it some more....if you looked at it some more that would be great one of these times my eyes are going to start bleeding from staring too long.......

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.