我正在尝试将值设置为已标记为单选按钮的字符串。我不明白我的错误

时间:2016-12-06 23:40:22

标签: java user-interface jbutton graphical-programming

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 个答案:

答案 0 :(得分:0)

  

RoomListener.actionPerformed(RoomType);

  1. 这不是static方法。您无法使用类名称来调用它。

  2. 什么是RoomType?如果它不是ActionEvent,那么它就不会起作用。看看这个方法。

    public void actionPerformed(ActionEvent event)
    
  3. 你真的不应该呼唤另一个听众的行动,或者至少我无法想出一个理由。您需要在RadioButtons上添加new RoomListener()。虽然,我建议您查看一个RadioGroup类,并阅读JavaDoc以获取正确的侦听器,以便您确定所选单选按钮的来源。

  4. 此方法不返回任何内容。 double roomtype是一个局部变量,当您退出此方法时,它将被丢弃(垃圾回收)。也许你想修改一个成员变量? this.roomtype? 除此之外 - 我无法告诉room1room2在哪里......他们似乎无法访问。

    public void actionPerformed(ActionEvent event)
    {
        double roomtype; 
    
        if (event.getSource() == room1)
            roomtype = 60;
        else if (event.getSource() == room2)
            roomtype = 75;
        else 
            roomtype = 100;
    }