Java小程序复选框错误
我的java复选框小程序有问题。我让它大部分工作,但我最终与一个小错误。当我选择“汤”时,色拉应该是灰色的(确实如此),但如果我已经从色拉中选择了一个项目,然后单击“汤”,色拉将变为灰色,并且该项目(色拉内部)仍处于选中状态Java小程序复选框错误,java,applet,checkbox,Java,Applet,Checkbox,我的java复选框小程序有问题。我让它大部分工作,但我最终与一个小错误。当我选择“汤”时,色拉应该是灰色的(确实如此),但如果我已经从色拉中选择了一个项目,然后单击“汤”,色拉将变为灰色,并且该项目(色拉内部)仍处于选中状态 public class Applet_11 extends Applet implements ItemListener { Panel dinnerPanel, soupPanel, saladPanel; Checkbox stand
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);
}
}
您所询问的行为一半是复选框,一半是单选按钮,有两种解决方法:
您所询问的行为一半是复选框,一半是单选按钮,有两种解决方法:
在我发布任何其他内容之前,我建议将所有内容存储在array/arraylist中,可能会使您的代码占当前代码的1/4。这是一个类赋值,我们还没有开始讨论数组,我不想跳到前面。但我知道这会更简单、更短。在我发布任何其他内容之前,我建议将所有内容存储在数组/数组列表中,可能会使您的代码占当前代码的1/4。这是一个类分配,我们还没有开始使用数组,我不想跳到前面。但我知道这会更简单、更短。
public class Applet_15934232 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);
cream = new Checkbox("cream", false);
cream.addItemListener(this);
broth = new Checkbox("broth", false);
broth.addItemListener(this);
gumbo = new Checkbox("gumbo", false);
gumbo.addItemListener(this);
tossed = new Checkbox("tossed", false);
tossed.addItemListener(this);
caesar = new Checkbox("ceasar", false);
caesar.addItemListener(this);
croutons = new Checkbox("croutons", false);
croutons.addItemListener(this);
lite = new Checkbox("lite", 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());
} else {
handleButtonSelection((Checkbox) e.getSource());
}
}
private void handleButtonSelection(Checkbox source) {
cream.setState(source == cream);
broth.setState(source == broth);
gumbo.setState(source == gumbo);
tossed.setState(source == tossed);
caesar.setState(source == caesar);
croutons.setState(source == croutons);
lite.setState(source == lite);
}
//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 = (selectedCourse == soup);
boolean saladEnabled = (selectedCourse == salad);
if (soupEnabled) {
tossed.setState(false);
caesar.setState(false);
croutons.setState(false);
lite.setState(false);
}
if (saladEnabled) {
cream.setState(false);
broth.setState(false);
gumbo.setState(false);
}
cream.setEnabled(soupEnabled);
broth.setEnabled(soupEnabled);
gumbo.setEnabled(soupEnabled);
tossed.setEnabled(saladEnabled);
caesar.setEnabled(saladEnabled);
croutons.setEnabled(saladEnabled);
lite.setEnabled(saladEnabled);
}
}