Я пытаюсь установить значение для уже помеченной радиокнопкой строки. Я не понимаю свою ошибку

public class RoomListener implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        double roomtype; 

        if (event.getSource() == room1)
            roomtype = 60;
        else if (event.getSource() == room2)
            roomtype = 75;
        else 
            roomtype = 100;
    }

}


public class CostListener implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        double NightLength, roomNumber, cost;
        String NightText = NumberOfNights.getText();
        String RoomText = NumberOfRooms.getText();

        NightLength = Double.parseDouble(NightText);
        roomNumber = Double.parseDouble(RoomText);

        RoomListener.actionPerformed(RoomType);
        cost = roomtype * NightLength * roomNumber;

        CostCalculation.setText(Double.toString(cost));
        NumberFormat fmt = NumberFormat.getNumberInstance();
        CostCalculation.setText(fmt.format(cost));
    }
}

1 ответ

RoomListener.actionPerformed(RoomType);

  1. Это не static метод. Вы не можете назвать это, используя имя класса.

  2. Что такое RoomType? Если это не ActionEventтогда это не сработает. Посмотрите на метод.

    public void actionPerformed(ActionEvent event)
    
  3. Вы действительно не должны вызывать actionPerformed другого слушателя, или, по крайней мере, я не могу придумать причину. Вам нужно добавить new RoomListener() на ваши радио кнопки. Тем не менее, я бы посоветовал вам заглянуть в класс RadioGroup и прочитать JavaDoc для правильного слушателя, который позволяет вам определить источник выбранной радиокнопки.

  4. Ничего не возвращается из этого метода. double roomtype является локальной переменной и отбрасывается (сборщик мусора) при выходе из этого метода. Может быть, вы хотели изменить переменную-член? this.roomtype? Наряду с этим - я не могу сказать, что room1 а также room2 здесь... Они, кажется, не доступны.

    public void actionPerformed(ActionEvent event)
    {
        double roomtype; 
    
        if (event.getSource() == room1)
            roomtype = 60;
        else if (event.getSource() == room2)
            roomtype = 75;
        else 
            roomtype = 100;
    }
    
Другие вопросы по тегам