954,132 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Cannot figure out why I'm getting these Errors

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);
}
}


}

}

Defiledgrave
Newbie Poster
5 posts since Apr 2004
Reputation Points: 11
Solved Threads: 0
 

whats the error?

BountyX
Posting Whiz in Training
230 posts since Mar 2004
Reputation Points: 28
Solved Threads: 9
 

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

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

sykkn
Newbie Poster
6 posts since Apr 2004
Reputation Points: 12
Solved Threads: 1
 

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 ;)

sykkn
Newbie Poster
6 posts since Apr 2004
Reputation Points: 12
Solved Threads: 1
 

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);
}
}


}

}

Defiledgrave
Newbie Poster
5 posts since Apr 2004
Reputation Points: 11
Solved Threads: 0
 

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.

BountyX
Posting Whiz in Training
230 posts since Mar 2004
Reputation Points: 28
Solved Threads: 9
 

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

Defiledgrave
Newbie Poster
5 posts since Apr 2004
Reputation Points: 11
Solved Threads: 0
 

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.

BountyX
Posting Whiz in Training
230 posts since Mar 2004
Reputation Points: 28
Solved Threads: 9
 
Defiledgrave
Newbie Poster
5 posts since Apr 2004
Reputation Points: 11
Solved Threads: 0
 

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

BountyX
Posting Whiz in Training
230 posts since Mar 2004
Reputation Points: 28
Solved Threads: 9
 

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);
}

}



}

Defiledgrave
Newbie Poster
5 posts since Apr 2004
Reputation Points: 11
Solved Threads: 0
 

thnx :) glad to here you got it working

BountyX
Posting Whiz in Training
230 posts since Mar 2004
Reputation Points: 28
Solved Threads: 9
 
WannaBe
Newbie Poster
3 posts since Jul 2004
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You