我的 java 复选框小程序有问题。我让它大部分工作,但我最终遇到了一个小错误。当我选择汤时,沙拉应该是灰色的(确实如此),但如果我已经从沙拉中选择了一个项目,然后单击汤,沙拉将变为灰色,并且仍选择该项目(沙拉内)。
public class Applet_11 extends Applet implements ItemListener
{
Panel
dinnerPanel,
soupPanel,
saladPanel;
Checkbox
standard, deluxe,
soup, salad,
cream, broth, gumbo,
tossed, caesar,
croutons,lite;
//Used to setup all of the boxes and add them to the Applet
public void init()
{
CheckboxGroup dinnerType = new CheckboxGroup();
standard = new Checkbox("standard", dinnerType, false);
standard.addItemListener(this);
deluxe = new Checkbox("deluxe", dinnerType, true);
deluxe.addItemListener(this);
CheckboxGroup soupOrSalad = new CheckboxGroup();
soup = new Checkbox("Soup", soupOrSalad, false);
soup.addItemListener(this);
salad = new Checkbox("Salad", soupOrSalad, false);
salad.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);
CheckboxGroup salads = new CheckboxGroup();
tossed = new Checkbox("tossed", salads, false);
tossed.addItemListener(this);
caesar = new Checkbox("ceasar", salads, false);
caesar.addItemListener(this);
croutons = new Checkbox("croutons", salads, false);
croutons.addItemListener(this);
lite = new Checkbox("lite", salads, false);
lite.addItemListener(this);
//adding the componets to the Applet
setLayout(new GridLayout(0, 1));
dinnerPanel = new Panel();
add(dinnerPanel);
dinnerPanel.add(standard);
dinnerPanel.add(deluxe);
soupPanel = new Panel();
add(soupPanel);
soupPanel.add(soup);
soupPanel.add(cream);
soupPanel.add(broth);
soupPanel.add(gumbo);
saladPanel = new Panel();
add(saladPanel);
saladPanel.add(salad);
saladPanel.add(tossed);
saladPanel.add(caesar);
saladPanel.add(croutons);
saladPanel.add(lite);
}
//ItemEvents and calls other functions
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());
}
}
//helper function for dinner type
void handleDinnerType(Checkbox selectedType)
{
boolean enabled = false;
if (selectedType == standard) {
enabled = false;
} else if (selectedType == deluxe) {
enabled = true;
}
cream.setEnabled(enabled);
broth.setEnabled(enabled);
gumbo.setEnabled(enabled);
tossed.setEnabled(enabled);
caesar.setEnabled(enabled);
croutons.setEnabled(enabled);
lite.setEnabled(enabled);
}
//helper function for salad and soup type
void handleSoupSaladChoice(Checkbox selectedCourse)
{
boolean soupEnabled, saladEnabled;
if (selectedCourse == soup) {
soupEnabled = true;
saladEnabled = false;
} else {
soupEnabled = false;
saladEnabled = true;
}
cream.setEnabled(soupEnabled);
broth.setEnabled(soupEnabled);
gumbo.setEnabled(soupEnabled);
tossed.setEnabled(saladEnabled);
caesar.setEnabled(saladEnabled);
croutons.setEnabled(saladEnabled);
lite.setEnabled(saladEnabled);
}
}