ラジオボタン、ボタン、チェックボックスを使用する基本的なプログラムを作成しました。私の問題は、実行時にチェックボックスを選択できるが、選択を解除できないことです。簡単なことだと思いますが、オラクルのWebサイトからコードのスニペットを試しましたが、機能しなかったようです。正しい方向に私を向けることができますか?ありがとう。
これは、チェックボックスのイベントを処理する内部クラスです。イベントを受け取り、変数を適切な価格に設定することを想定しています。試しましelseたが、うまくいかないようです。
private void buildPanel()
{
    //Create the label, radio buttons, check boxes, and buttons
    messageLabel = new JLabel("Select the package of your choice: ");
    min1 = new JRadioButton("300 Minutes - $45.00 per month.");
    min2 = new JRadioButton("800 Minutes - $65.00 per month.");
    min3 = new JRadioButton("1500 Minutes -  $99.00 per month.");
    model1 = new JRadioButton("Model 100 - $29.95");
    model2 = new JRadioButton("Model 110 - $49.95 ");
    model3 = new JRadioButton("Model 200 - $99.95");
    vMail = new JCheckBox("Voice Mail  - $5.00 per month.");
    vMail.setSelected(false);
    textMes = new JCheckBox("Text Messaging - $10.00 per month.");
    textMes.setSelected(false);
    okButton = new Button("OK");
    //Group the radio buttons
    radiogroupmin = new ButtonGroup();
    radiogroupmin.add(min1);
    radiogroupmin.add(min2);
    radiogroupmin.add(min3);
    radiogroupmodel = new ButtonGroup();
    radiogroupmodel.add(model1);
    radiogroupmodel.add(model2);
    radiogroupmodel.add(model3);
    //Group the check boxes
    checkboxgroup = new ButtonGroup();
    checkboxgroup.add(vMail);
    checkboxgroup.add(textMes);
    //Add action listener to the radio buttons
    min1.addActionListener(new RadioButtonListener());
    min2.addActionListener(new RadioButtonListener());
    min3.addActionListener(new RadioButtonListener());
    model1.addActionListener(new RadioButtonListener());
    model2.addActionListener(new RadioButtonListener());
    model3.addActionListener(new RadioButtonListener());
    //Add action listener to the check boxes
    vMail.addItemListener(new CheckBoxListener());
    textMes.addItemListener(new CheckBoxListener());
    //Add action listener to the button
    okButton.addActionListener(new ButtonListener());
    //create a panel and add the components to it
    panel = new JPanel(new BorderLayout());
    panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));
    panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    panel.add(messageLabel);
    panel.add(min1);
    panel.add(min2);
    panel.add(min3);
    panel.add(model1);
    panel.add(model2);
    panel.add(model3);
    panel.add(vMail);
    panel.add(textMes);     
    panel.add(okButton);
}
public static class RadioButtonListener implements ActionListener
{       
        public static double minPrice;
        public static String model;
        public static double modelPrice = 0.0;
    public void actionPerformed(ActionEvent e)
    {
        if (e.getSource() == min1)
        {
            minPrice = 45.00;
        }
        else if(e.getSource() == min2)
        {
            minPrice = 65.00;
        }
        else if(e.getSource() == min3)
        {
            minPrice = 99.00;
        }
        if(e.getSource() == model1)
        {
            model = "Model 100";
            modelPrice = 29.00;
        }
        else if(e.getSource() == model2)
        {
            model = "Model 110";
            modelPrice = 49.99;
        }
        else if(e.getSource() == model3)
        {
            model = "Model 200";
            modelPrice = 99.99;
        }
    }
    public static double getMinPrice()
    {
        return minPrice;
    }
    public static  String getModel()
    {
        return model;
    }
    public static double getModelPrice()
    {
        return modelPrice;
    }
}
public static class CheckBoxListener implements ItemListener
{
    static double voicePrice;
    static double  textPrice;
    public void itemStateChanged(ItemEvent e) 
    {
        if(e.getSource() == vMail)
        {
            if (e.getStateChange() == ItemEvent.SELECTED)
            {
            voicePrice = 5.00;
            }
            else
            {
            voicePrice = 0.0;
            }
        }           
        if(e.getSource() == textMes)
        {
            if(e.getStateChange() == ItemEvent.SELECTED)
            {
                textPrice = 10.00;
            }
            else
            {
                textPrice = 0.0;
            }
        }
    }
    public static double getVoicePrice()
    {
        return voicePrice;
    }
    public static double getTextPrice()
    {
        return textPrice;
    }   
}
private  class ButtonListener implements ActionListener
{
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == okButton)
        {
            DecimalFormat df = new DecimalFormat("$00.##");
            double total;
            final double tax = 0.6;
            final double modelTax = (RadioButtonListener.getModelPrice() * tax) + RadioButtonListener.getModelPrice();
            total = RadioButtonListener.getMinPrice() + 
                    modelTax + CheckBoxListener.getVoicePrice() + CheckBoxListener.getTextPrice(); 
            JOptionPane.showMessageDialog(null, "Your total is: " + df.format(total));
        }
    }
}