Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序复选框错误_Java_Applet_Checkbox - Fatal编程技术网

Java小程序复选框错误

Java小程序复选框错误,java,applet,checkbox,Java,Applet,Checkbox,我的java复选框小程序有问题。我让它大部分工作,但我最终与一个小错误。当我选择“汤”时,色拉应该是灰色的(确实如此),但如果我已经从色拉中选择了一个项目,然后单击“汤”,色拉将变为灰色,并且该项目(色拉内部)仍处于选中状态 public class Applet_11 extends Applet implements ItemListener { Panel dinnerPanel, soupPanel, saladPanel; Checkbox stand

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

您所询问的行为一半是复选框,一半是单选按钮,有两种解决方法:

  • 在Checkboxgroup中添加一个额外的复选框,它基本上表示“没有其他选项”。并在侦听器中设置该复选框的状态。因为我相信,一旦你在复选框组中选择了一个选项,你就无法清除它

  • 删除复选框组,让您的侦听器管理其他复选框的排除,而不是依赖复选框组。这个示例代码是

  • -


    您所询问的行为一半是复选框,一半是单选按钮,有两种解决方法:

  • 在Checkboxgroup中添加一个额外的复选框,它基本上表示“没有其他选项”。并在侦听器中设置该复选框的状态。因为我相信,一旦你在复选框组中选择了一个选项,你就无法清除它

  • 删除复选框组,让您的侦听器管理其他复选框的排除,而不是依赖复选框组。这个示例代码是

  • -


    在我发布任何其他内容之前,我建议将所有内容存储在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);
        }
    }