2011-12-14 108 views
0

我將激活一個帶有複選框和複選框組的菜單的java小應用程序,並在每個食物選項旁邊列出卡路里。我的問題是我無法弄清楚,爲什麼我不斷收到此錯誤信息,當我編譯:複選框編譯錯誤

AnAppletWithCheckboxes.java:188:非法向前參考 INT crepeVal =的Integer.parseInt(textField.getText());

我得到的每一行我都將textField轉換爲int,所以有17個錯誤。任何想法爲什麼將不勝感激!

這是我的代碼:: 它很長,因爲有很多複選框和textFields。我評論了我的錯誤! :

import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 

public class AnAppletWithCheckboxes extends Applet implements ItemListener { 
    public void init() { 
     setLayout(new GridLayout(1, 0)); 

    CheckboxGroup dinnerType = new CheckboxGroup(); 
    standard = new Checkbox("standard", dinnerType, false); 
    standard.addItemListener(this); 
    deluxe = new Checkbox("deluxe", dinnerType, true); 
    deluxe.addItemListener(this); 

    CheckboxGroup appetizers = new CheckboxGroup(); 
    crepe = new Checkbox("crepe", appetizers, false); 
    crepe.addItemListener(this); 
    quiche = new Checkbox("quiche", appetizers, false); 
    quiche.addItemListener(this); 
    dumpling = new Checkbox("dumpling", appetizers, false); 
    dumpling.addItemListener(this); 

textField = new TextField("300"); 
    textField.setEditable(false); 
textField2 = new TextField("330"); 
    textField2.setEditable(false); 
textField3 = new TextField("98"); 
    textField3.setEditable(false); 

    CheckboxGroup soupOrSalad = new CheckboxGroup(); 

    soup = new Checkbox("Soup", soupOrSalad, false); 
    soup.addItemListener(this); 

    CheckboxGroup soups = new CheckboxGroup(); 
    cream = new Checkbox("cream", soups, false); 
    cream.addItemListener(this); 
    broth = new Checkbox("broth", soups, false); 
    broth.addItemListener(this); 
    gumbo = new Checkbox("gumbo", soups, false); 
    gumbo.addItemListener(this); 

textField4 = new TextField("190"); 
    textField4.setEditable(false); 
textField5 = new TextField("20"); 
    textField5.setEditable(false); 
textField6 = new TextField("110"); 
    textField6.setEditable(false); 

    salad = new Checkbox("Salad", soupOrSalad, false); 
    salad.addItemListener(this); 

    CheckboxGroup salads = new CheckboxGroup(); 
    tossed = new Checkbox("tossed", salads, false); 
    tossed.addItemListener(this); 
    caesar = new Checkbox("caesar", salads, false); 
    caesar.addItemListener(this); 
    croutons = new Checkbox("croutons"); 
    croutons.addItemListener(this); 
    lite = new Checkbox("lite dressing"); 
    lite.addItemListener(this); 

textField7 = new TextField("35"); 
    textField7.setEditable(false); 
textField8 = new TextField("90"); 
    textField8.setEditable(false); 
textField9 = new TextField("60"); 
    textField9.setEditable(false); 
textField10 = new TextField("50"); 
    textField10.setEditable(false); 

    CheckboxGroup entrees = new CheckboxGroup(); 
    chicken = new Checkbox("chicken", entrees, false); 
    chicken.addItemListener(this); 
    beef = new Checkbox("beef", entrees, false); 
    beef.addItemListener(this); 
    lamb = new Checkbox("lamb", entrees, false); 
    lamb.addItemListener(this); 
    fish = new Checkbox("fish", entrees, false); 
    fish.addItemListener(this); 

textField11 = new TextField("200"); 
    textField11.setEditable(false); 
textField12 = new TextField("170"); 
    textField12.setEditable(false); 
textField13 = new TextField("65"); 
    textField13.setEditable(false); 
textField14 = new TextField("150"); 
    textField14.setEditable(false); 

    CheckboxGroup deserts = new CheckboxGroup(); 
    pie = new Checkbox("pie", deserts, false); 
    pie.addItemListener(this); 
    fruit = new Checkbox("fruit", deserts, false); 
    fruit.addItemListener(this); 
    sherbet = new Checkbox("sherbet", deserts, false); 
    sherbet.addItemListener(this); 

textField15 = new TextField("80"); 
    textField15.setEditable(false); 
textField16 = new TextField("60"); 
    textField16.setEditable(false); 
textField17 = new TextField("107"); 
    textField17.setEditable(false); 

calories = new Button("Calories"); 

calTextField = new TextField("0"+total); 
    calTextField.setEditable(false); 

    setLayout(new GridLayout(0, 1)); 

    Panel p = new Panel(); 
    add(p); 
    p.add(standard); 
    p.add(deluxe); 

    appetizerPanel = new Panel(); 
    add(appetizerPanel); 
label = new Label("Appetizer"); 
    appetizerPanel.add(label); 
    appetizerPanel.add(crepe); 
appetizerPanel.add(textField); 
    appetizerPanel.add(quiche); 
appetizerPanel.add(textField2); 
    appetizerPanel.add(dumpling); 
appetizerPanel.add(textField3); 

    soupPanel = new Panel(); 
    add(soupPanel); 
    soupPanel.add(soup); 
    soupPanel.add(cream); 
soupPanel.add(textField4); 
    soupPanel.add(broth); 
soupPanel.add(textField5); 
    soupPanel.add(gumbo); 
soupPanel.add(textField6); 

    saladPanel = new Panel(); 
    add(saladPanel); 
    saladPanel.add(salad); 
    saladPanel.add(tossed); 
saladPanel.add(textField7); 
    saladPanel.add(caesar); 
saladPanel.add(textField8); 
    saladPanel.add(croutons); 
saladPanel.add(textField9); 
    saladPanel.add(lite); 
saladPanel.add(textField10); 

    entreePanel = new Panel(); 
    add(entreePanel); 
label2 = new Label("Entree"); 
    entreePanel.add(label2); 
    entreePanel.add(chicken); 
entreePanel.add(textField11); 
    entreePanel.add(beef); 
entreePanel.add(textField12); 
    entreePanel.add(lamb); 
entreePanel.add(textField13); 
    entreePanel.add(fish); 
entreePanel.add(textField14); 

desertPanel = new Panel(); 
    add(desertPanel); 
label3 = new Label("Desert"); 
    desertPanel.add(label3); 
    desertPanel.add(pie); 
desertPanel.add(textField15); 
    desertPanel.add(fruit); 
desertPanel.add(textField16); 
    desertPanel.add(sherbet); 
desertPanel.add(textField17); 

caloriesPanel = new Panel(); 
add(caloriesPanel); 
caloriesPanel.add(calories); 
caloriesPanel.add(calTextField); 
}  

public void LabelChange(Label b) { 
if (b ==label3) 
    b.setForeground(Color.lightGray); 
else 
    label3.setForeground(Color.black); 
} 

/*這是從哪裏獲得這些錯誤! */

int crepeVal = Integer.parseInt(textField.getText()); 
int quicheVal = Integer.parseInt(textField2.getText()); 
int dumplingVal = Integer.parseInt(textField3.getText()); 
int creamVal = Integer.parseInt(textField4.getText()); 
int brothVal = Integer.parseInt(textField5.getText()); 
int gumboVal = Integer.parseInt(textField6.getText()); 
int tossedVal = Integer.parseInt(textField7.getText()); 
int caesarVal = Integer.parseInt(textField8.getText()); 
int croutonsVal = Integer.parseInt(textField9.getText()); 
int liteVal = Integer.parseInt(textField10.getText()); 
int chickenVal = Integer.parseInt(textField11.getText()); 
int beefVal = Integer.parseInt(textField12.getText()); 
int lambVal = Integer.parseInt(textField13.getText()); 
int fishVal = Integer.parseInt(textField14.getText()); 
int pieVal = Integer.parseInt(textField15.getText()); 
int fruitVal = Integer.parseInt(textField16.getText()); 
int sherbetVal = Integer.parseInt(textField17.getText()); 

public boolean action(Event evt, Object whatAction){ 
if(!(evt.target instanceof Button)){ 
    return false; 
} 
else { 
    calorieCount(); 
    return true; 
}  
} 

public void calorieCount() { 
if (crepe.getState()) 
    crepeVal += total; 
else 
    crepeVal = 0; 
if (quiche.getState()) 
    quicheVal += total; 
else 
    quicheVal = 0; 
if (dumpling.getState()) 
    dumplingVal += total; 
else 
    dumplingVal= 0; 
if (cream.getState()) 
    creamVal += total; 
else 
    creamVal = 0; 
if (broth.getState()) 
    brothVal += total; 
else 
    brothVal = 0; 
if (gumbo.getState()) 
    gumboVal += total; 
else 
    gumboVal = 0; 
if (tossed.getState()) 
    tossedVal += total; 
else 
    tossedVal = 0; 
if (caesar.getState()) 
    caesarVal += total; 
else 
    caesarVal = 0; 
if (croutons.getState()) 
    croutonsVal += total; 
else 
    croutonsVal = 0; 
if (lite.getState()) 
    liteVal += total; 
else 
    liteVal = 0; 
if (chicken.getState()) 
    chickenVal += total; 
else 
    chickenVal = 0; 
if (beef.getState()) 
    beefVal += total; 
else 
    beefVal = 0; 
if (lamb.getState()) 
    lambVal += total; 
else 
    lambVal = 0; 
if (fish.getState()) 
    fishVal += total; 
else 
    fishVal = 0; 
if (pie.getState()) 
    pieVal += total; 
else 
    pieVal = 0; 
if (fruit.getState()) 
    fruitVal += total; 
else 
    fruitVal = 0; 
if (sherbet.getState()) 
    sherbetVal += total; 
else 
    sherbetVal = 0; 
} 

public void itemStateChanged(ItemEvent e) { 
    if (e.getSource() == standard || e.getSource() == deluxe) 
     handleDinnerType((Checkbox)e.getSource()); 
    else if (e.getSource() == soup || e.getSource() == salad) 
     handleSoupSaladChoice((Checkbox)e.getSource()); 
} 

void handleDinnerType(Checkbox selectedType) { 
    boolean enabled; 
    if (selectedType == standard){ 
     enabled = false; 
    LabelChange(label3); 
} 
    else{ 
     enabled = true; 
    LabelChange(label); 
} 

soup.setEnabled(enabled); 
salad.setEnabled(enabled); 
    pie.setEnabled(enabled); 
    fruit.setEnabled(enabled); 
    sherbet.setEnabled(enabled); 
    cream.setEnabled(enabled); 
    broth.setEnabled(enabled); 
    gumbo.setEnabled(enabled); 
    tossed.setEnabled(enabled); 
    caesar.setEnabled(enabled); 
    croutons.setEnabled(enabled); 
    lite.setEnabled(enabled); 

} 

void handleSoupSaladChoice(Checkbox selectedCourse) { 
    boolean soupEnabled, saladEnabled; 
    if (selectedCourse == soup) { 
     soupEnabled = true; 
     saladEnabled = false; 
    soup.setForeground(Color.BLACK); 
     salad.setForeground(Color.lightGray); 
    } 
    else { 
     soupEnabled = false; 
     saladEnabled = true; 
    soup.setForeground(Color.lightGray); 
     salad.setForeground(Color.BLACK); 
    } 
    cream.setEnabled(soupEnabled); 
    broth.setEnabled(soupEnabled); 
    gumbo.setEnabled(soupEnabled); 

    tossed.setEnabled(saladEnabled); 
    caesar.setEnabled(saladEnabled); 
    croutons.setEnabled(saladEnabled); 
    lite.setEnabled(saladEnabled); 
} 

Label 
label, label2, label3; 

Panel 
    appetizerPanel, soupPanel, saladPanel, entreePanel, desertPanel, caloriesPanel; 

Checkbox 
    standard, deluxe, 
    soup, salad, 
    crepe, quiche, dumpling, 
    cream, broth, gumbo, 
    tossed, caesar, 
    croutons, lite, 
    chicken, beef, lamb, fish, 
    pie, fruit, sherbet; 

Button calories; 
int total = 0; 

TextField 
textField, textField2, textField3, 
textField4, textField5, textField6, 
textField7, textField8, textField9, 
textField10, textField11, textField12, 
textField13, textField14, textField15, 
textField16, textField17, calTextField; 

}

+0

textfields中的文字是什麼? –

+1

1)*「因此有17個錯誤。」*當您獲得** 1st **錯誤時,您需要調試這些東西!這給我帶來了.. 2)爲更好地幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

我一次性得到了它們,我只寫了一個,因爲它們對於每個parseInt轉換都是相同的錯誤。 – 123me

回答

0

在Java中,你不能指代一個場a在另一個領域的初始化b如果b在源代碼a之前聲明。也就是說,這是允許的:

int b = 3; 
int a = b; 

,但這是不允許的:

int a = b; 
int b = 3; 

順便說一句,要是Java搞清楚的一些神奇的方式,textField有crepeVal之前被初始化,您仍然會得到一個NullPointerException,因爲textFieldnull對象構建後。

+0

所以我需要首先分別聲明整數然後將它們分配給textField中的值? – 123me

+0

是的,直到你的變量實際上持有對'TextField'的引用,它們不會給你任何有用的東西。 –