java - 复选框编译错误

标签 java applet compiler-errors awt

我要激发一个带有复选框和复选框组的菜单的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;

}

最佳答案

在Java中,如果在源代码中的a之前声明了b,则不允许在另一个字段b的初始化程序中引用字段a。也就是说,这是允许的:

int b = 3;
int a = b;

但这是不允许的:
int a = b;
int b = 3;

顺便说一句,如果Java有某种神奇的方法可以确定textField必须在crepeVal之前初始化,那么您仍然会得到NullPointerException,因为textField在对象构造之后就是null

关于java - 复选框编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502018/

相关文章:

java - 在 EditText 中输入文本时出现 NullPointerException

没有 JavaMail API 的 Java POP3 消息解析器

java - 用 java eclipse 生成的可运行 jar 文件在双击时不会运行

xcode - PCH 编译时出现模块缓存路径错误

java - 如何在多维 arrayList 中拆分 ArrayList 中的元素

java - 删除csv文件中的一行

java - 小程序无法从 jar 加载类

java - 通知多个 Java 小程序/应用程序服务器上的更改的最佳方法

c++ - osgDB/FileUtils在我的代码中导致编译器错误

c - 将错误的无效操作数编译为二进制&&(具有 'int'和 'pthread_t' {aka 'struct <anonymous>'})