2011-12-20 40 views
1

我目前有一个类Room和类Hostel它拥有rooms = new ArrayList <Room>();。然后我有一个BookRoomGUI类。修改arraylist通过textfields

当一个房间被添加到它使用下面的构造ArrayList中:

public Room(int newRoomNo, boolean newRoomEnSuite) 
{ 
    roomNo = newRoomNo; 
    roomEnSuite = newRoomEnSuite; 
    roomBooking = "Free"; 
    roomNights = 0; 
    roomBooker = "No Booker"; 
} 

BookRoomGUI类我有以下JTextField的情况:

fields.add(roomnumberJTextField); 
    fields.add(bookerJtextField); 
    fields.add(nightsJTextField); 
    fields.add(peoplenoJTextField); 

我试图让内的方法Hostel如果房间号匹配,它将采用这些文本字段的值并更改原始构造函数中的相应变量:

public int makeBooking(int number) 
{ 
    for (Room room : rooms) 
    { 
    if (number == room.getRoomNo()) 
    { 
     room.setRoomBooker(bookRoom.booker); 
    } 
    } 
} 

我的问题是if语句应该怎么做?目前我使用booker = bookerJtextField.getText();采取从文本字段中RoomBookRoomGUI和setRoomBooker但这不起作用,我提出在房

setRoomBooker()不能适用于(java.lang.String中)

+0

这将是更好地存储在一个'号房间 - > Room'地图代替列表。确保你在'Room'类中有'setRoomBooker(String)'方法。 – khachik

回答

2

请确保您有在Room下面的方法:

public void setRoomBooker(String roomBooker) { 
    this.roomBooker = roomBooker; 
} 

现在,如果你看一下错误messege:

setRoomBooker()的房间不能适用于(java.lang.String中)

你可以看到你的setRoomBooker()方法目前没有规定采取java.lang.String类型的参数(或任何参数完全)。

所以,你需要改变方法的定义,你可以做到以下几点:

room.setRoomBooker(bookRoom.booker); //<-- You are passing it an argument of type String 
+0

这意味着我需要改变getRoomNumber方法吗? –

+0

不。它与getRoomNumber方法无关。你确定你的'Room'类有上述方法吗? –

+0

退后一步,只是试图修改没有GUI启动的数组列表,谢谢。 –