2016-12-06 5 views
-3
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)); 
    } 
} 
+3

ので、問題は何ですか?あなたはどんなエラーを出していますか? RoomListener.actionPerformed(roomtype)の –

+0

; - 「HotelBookingPanel.RoomListenerタイプのactionPerformed(ActionEvent)メソッドは引数に適用できません(double)」というメッセージが表示されます –

答えて

0

RoomListener.actionPerformed(RoomType)私のミスを理解していません。

  1. これはstatic方法ではありません。クラス名を使用して呼び出すことはできません。

  2. RoomTypeとは何ですか? ActionEventでない場合は動作しません。方法を見てください。

    public void actionPerformed(ActionEvent event) 
    
  3. あなたは本当に別のリスナーのactionPerformedに呼び出すべきでない、または少なくとも私は理由を考えることはできません。 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; 
    } 
    
関連する問題