Java: ButtonGroup не будет отображаться

Не удается отобразить мой ButtonGroup для первых двух флажков. Попытка добавить их, кажется, прошла успешно, однако группа не отображается. Видишь, что я сделал не так?

  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;

  public class JCottageFrame extends
  JFrame implements ItemListener {

     final int ONE_BEDROOM = 650;
     final int TWO_BEDROOM = 850;
     final int ROW_BOAT = 60;
     int totalPrice;

     ButtonGroup group = new ButtonGroup();

     JCheckBox oneBed = new JCheckBox
  ("One Bedroom/week $" + ONE_BEDROOM, false);

     JCheckBox twoBed = new
  JCheckBox("Two Bedroom/week $" + TWO_BEDROOM, false);
     JCheckBox boat = new JCheckBox ("Boat/week $" + ROW_BOAT, false);

     JLabel resortLabel = new JLabel ("Koch's Cottages Weekly Rentals");
     JLabel priceLabel = new JLabel("The price for your stay is");

     JTextField totPrice = new JTextField(4);
     JLabel optionExplainLabel2 = new JLabel
  ("Check the rentals you wish to purchase.");


     public JCottageFrame() {

        super("JCottageFrame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLayout(new FlowLayout());

        add(resortLabel);
        add(optionExplainLabel2);
        group.add(oneBed);
        group.add(twoBed);
        add(group);  //This does not seem to be working correctly
        add(boat);
        add(priceLabel);
        add(totPrice);

        totPrice.setText("$" + totalPrice);

        oneBed.addItemListener(this);
        twoBed.addItemListener(this);
        boat.addItemListener(this);
     }
        public void itemStateChanged(ItemEvent event) {
        Object source = event.getSource();
        int select = event.getStateChange();

        if(source == oneBed)
        if(select == ItemEvent.SELECTED)
           totalPrice += ONE_BEDROOM;
           else
              totalPrice -= ONE_BEDROOM;
           else
              if(source == twoBed) {
              if(select == ItemEvent.SELECTED)
                 totalPrice += TWO_BEDROOM;
                    else
                       totalPrice -= TWO_BEDROOM;
              }
              else
                 if(select == ItemEvent.SELECTED)
                    totalPrice += ROW_BOAT;
                    else
                       totalPrice -= ROW_BOAT;
                       totPrice.setText("$" + totalPrice);
        }

        public static void main(String[] args)
  {
           JCottageFrame aFrame =
  new JCottageFrame();
           final int WIDTH = 270;
           final int HEIGHT = 230;
           aFrame.setSize(WIDTH, HEIGHT);
           aFrame.setVisible(true);

           aFrame.setLocationRelativeTo(null);
  }
  }

Получение «не найдено подходящего метода для добавления (ButtonGroup)», хотя я объявил об этом.


person user3892208    schedule 30.07.2014    source источник


Ответы (1)


Вы не добавляете ButtonGroup в кадр. Вы добавляете переключатели в группу, чтобы указать возможные варианты. Вы добавляете кнопки в рамку, чтобы указать, где они должны появляться. Это независимые интересы. (Источник).

Кроме того, использование JRadioButton вместо JCheckBox даст пользователю лучшее указание на то, что можно выбрать только один.

person unholysampler    schedule 30.07.2014
comment
Спасибо за отзыв, однако мой профессор запрашивает JCheckBox вместо RadioButton. Пожалуйста, обратитесь к meta.stackoverflow.com/questions/266979/ чтобы присоединиться к обсуждению надуманных домашних заданий. - person user3892208; 30.07.2014
comment
Тогда примеры в учебниках Oracle неверны. Они показывают добавление группы в панель. docs.oracle.com/javase/tutorial/uiswing/components/ - person Kenny Powers; 10.04.2016