Я пытаюсь установить значение для уже помеченной радиокнопкой строки. Я не понимаю свою ошибку
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);
Это не
static
метод. Вы не можете назвать это, используя имя класса.Что такое
RoomType
? Если это неActionEvent
тогда это не сработает. Посмотрите на метод.public void actionPerformed(ActionEvent event)
Вы действительно не должны вызывать actionPerformed другого слушателя, или, по крайней мере, я не могу придумать причину. Вам нужно добавить
new RoomListener()
на ваши радио кнопки. Тем не менее, я бы посоветовал вам заглянуть в класс RadioGroup и прочитать JavaDoc для правильного слушателя, который позволяет вам определить источник выбранной радиокнопки.Ничего не возвращается из этого метода.
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; }