Метка с вопросом о переключателе - PullRequest
1 голос
/ 22 августа 2010

У меня есть некоторые проблемы с моим кодом, я не вижу, что не так с логикой, но вот она. Я хочу, чтобы у них был переключатель, чтобы выбрать либо, либо, и когда он выбран (переключатель), текстовая область недоступна, и наоборот. Вот сегмент кода. Когда я переключаюсь назад и вперед по переключателям, обе становятся недоступными для выбора, и я не уверен, почему.

 private void PriceTab()
 {
  pricePanel = new JPanel(new FlowLayout());


  final JRadioButton poolPrice= new JRadioButton("Pool");
  final JRadioButton tubPrice = new JRadioButton("Hot Tub");

  poolPrice.setSelected(true);

  ButtonGroup group = new ButtonGroup();
  group.add(poolPrice);
  group.add(tubPrice);

  pricePanel.add(poolPrice);
  pricePanel.add(tubPrice);


  final JLabel poolLabel = new JLabel("Enter the pool's volume:              ");
  final JTextField poolField = new JTextField(10);
  pricePanel.add(poolLabel);
  pricePanel.add(poolField);

  final JTextField tubField = new JTextField(10);
  final JLabel tubLabel = new JLabel ("Enter the tub's volume:     ");
  pricePanel.add(tubLabel);
  pricePanel.add(tubField);


  JButton calculatePrice = new JButton("Calculate Price");
  calculatePrice.setMnemonic('C');
  pricePanel.add(calculatePrice);
  pricePanel.add(createExitButton());

  pricePanel.add(new JLabel("The price is: "));
  final JTextField priceField = new JTextField(10);
  priceField.setEditable(false);
  pricePanel.add(priceField);

  final JTextArea messageArea = createMessageArea(1, 25,
  "*Please only select one section");
  pricePanel.add(messageArea);


  calculatePrice.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {

     double pool = Double.parseDouble (poolField.getText());
     double tub = Double.parseDouble(tubField.getText());

     double price;
     if (poolPrice.isSelected()) {
      price = pool * 100;
     } else {
      price = tub * 75;
     }
     priceField.setText(df.format(price));
    }
  });



  ActionListener priceListener = new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    if (e.getSource() == poolPrice) {
     tubLabel.setEnabled(false);
     tubField.setEnabled(false);
     messageArea.setVisible(false);
    } else if (e.getSource() == tubPrice) {
     poolLabel.setEnabled(false);
     poolField.setEnabled(false);
     messageArea.setVisible(false);
    }
    }
   };

  poolPrice.addActionListener(priceListener);
  tubPrice.addActionListener(priceListener);
 }

1 Ответ

3 голосов
/ 22 августа 2010
ActionListener priceListener = new ActionListener() { 
        public void actionPerformed(ActionEvent e) { 
            if (e.getSource() == poolPrice) { 
                tubLabel.setEnabled(false); 
                tubField.setEnabled(false); 
                // Re-enable the previously disabled labels
                poolLabel.setEnabled(true);
                poolField.setEnabled(true);
                messageArea.setVisible(false); 
            } else if (e.getSource() == tubPrice) { 
                poolLabel.setEnabled(false); 
                poolField.setEnabled(false); 
                // Re-enable disabled labels
                tubLabel.setEnabled(true);
                tubField.setEnabled(true);

                messageArea.setVisible(false); 
            } 
            } 
        }; 

Вам необходимо снова включить отключенные кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...